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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top