problème Drop_table prévention rake db: migrate
-
25-10-2019 - |
Question
Je cherchais un moyen de déposer une table dans Rails et prendre un nouveau départ et suis tombé sur cette réponse: Rails DB migration - Comment faire pour supprimer une table
Cependant, quand je courais drop_table :examples
j'ai eu l'erreur suivante:
-bash: drop_table: command not found
Voici mon fichier migrate create_examples
:
def self.down
drop_table :examples
end
Quelqu'un peut-il me guider dans la fixation de ce et me donner un aperçu sur ce que je fais mal? Je dois le corriger parce que ce migrate particulier empêche de faire un rake db:migrate
, générant l'erreur suivante:
== 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)
Merci! (Et si je dois fournir plus de code me faire savoir.)
La solution
Vous devriez laisser tomber votre vieille table juste avant la création de la nouvelle version:
def self.up
drop_table :examples
create_table :examples do |t|
#...
end
end
Et puisque vous ne pouvez pas vraiment inverser cette drop_table
, vous voudrez peut-être soulever une exception dans le rollback:
def self.down
raise ActiveRecord::IrreversibleMigration
end
Ou peut-être vous voulez juste garder votre self.down
actuelle.