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.)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top