problema Drop_table impedendo rake db: migrate
-
25-10-2019 - |
Domanda
Ero alla ricerca di un modo per eliminare una tabella in Rails e ricominciare da capo e sono imbattuto in questa risposta: Rails DB migrazione -? Come eliminare una tabella
Tuttavia, quando mi sono imbattuto drop_table :examples
ho ottenuto il seguente errore:
-bash: drop_table: command not found
Ecco il mio file di migrazione create_examples
:
def self.down
drop_table :examples
end
Chiunque può aiutare mi guida nella risoluzione di questo e mi danno una visione su ciò che sto facendo male? Ho bisogno di risolvere il problema, perché questa particolare migrazione impedisce di fare un rake db:migrate
, che genera il seguente errore:
== CreateExamples: migrating ====================================================
-- create_table(:examples)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "examples" already exists: CREATE TABLE "examples" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "content" varchar(255), "user_id" integer, "created_at" datetime, "updated_at" datetime)
Grazie! (E se ho bisogno di fornire più codice fatemelo sapere.)
Soluzione
Si dovrebbe far cadere la vecchia tabella a destra prima di creare la nuova versione:
def self.up
drop_table :examples
create_table :examples do |t|
#...
end
end
E dal momento che non si può davvero invertire tale drop_table
, si potrebbe desiderare di sollevare un'eccezione nel rollback:
def self.down
raise ActiveRecord::IrreversibleMigration
end
O forse volete solo per mantenere il vostro self.down
corrente.