Drop_table Problem, das Rake DB verhindern: migrieren
-
25-10-2019 - |
Frage
Ich suchte nach einer Möglichkeit, einen Tisch in Schienen fallen zu lassen und frisch zu beginnen und stieß auf diese Antwort: Rails DB -Migration - Wie kann man einen Tisch fallen lassen?
Als ich jedoch rannte drop_table :examples
Ich habe den folgenden Fehler erhalten:
-bash: drop_table: command not found
Hier ist meins create_examples
Datei migrieren:
def self.down
drop_table :examples
end
Kann jemand helfen, mich dazu zu führen, dies zu reparieren und mir Einblicke zu geben, was ich falsch mache? Ich muss es beheben, weil diese bestimmte Migration verhindert, a zu tun rake db:migrate
, Erzeugen Sie den folgenden Fehler:
== 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)
Vielen Dank! (Und wenn ich mehr Code bereitstellen muss, lassen Sie es mich wissen.)
Lösung
Sie sollten Ihre alte Tabelle kurz vor dem Erstellen der neuen Version fallen lassen:
def self.up
drop_table :examples
create_table :examples do |t|
#...
end
end
Und da Sie das nicht wirklich umkehren können drop_table
, Möglicherweise möchten Sie eine Ausnahme im Rollback hervorrufen:
def self.down
raise ActiveRecord::IrreversibleMigration
end
Oder vielleicht möchten Sie nur Ihren Strom behalten self.down
.