Pregunta

Estaba buscando una manera de dejar caer una mesa en los rieles y comenzar de nuevo y encontré esta respuesta: Migración de Rails DB - ¿Cómo dejar caer una mesa?

Sin embargo, cuando corrí drop_table :examples Tuve el siguiente error:

-bash: drop_table: command not found

Aquí está mi create_examples Migrate el archivo:

def self.down
  drop_table :examples
end

¿Alguien puede ayudarme a guiarme a arreglar esto y darme una idea de lo que estoy haciendo mal? Necesito arreglarlo porque esta migración en particular está evitando que haga un rake db:migrate, Generando el siguiente error:

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

¡Gracias! (Y si necesito proporcionar más código, hágamelo saber).

¿Fue útil?

Solución

Deberías dejar caer tu antigua mesa justo antes de crear la nueva versión:

def self.up
    drop_table :examples
    create_table :examples do |t|
        #...
    end
end

Y ya que realmente no puedes revertir eso drop_table, es posible que desee plantear una excepción en la reversión:

def self.down
    raise ActiveRecord::IrreversibleMigration
end

O tal vez solo quieres mantener tu actual self.down.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top