remove rails foreign column add_column ruby-on-rails schema migration rake

ruby-on-rails - foreign - remove migration rails



¿Es rake db: migra el comando correcto para volver a sincronizar schema.rb con el esquema de su base de datos? (7)

Ejecuté "rake db: migrate" para volver a sincronizar schema.db con el esquema de mi base de datos. Pero falló, diciendo que una de mis tablas ya existe. Creo que estaba tratando de recrear la tabla. Si solo desea obtener schema.rb actualizado para reflejar cualquier cambio que haya realizado en la base de datos independientemente de Rails, ¿qué comando debe usar si no es "rake db: migrate"? ¿Y cuál es la mejor fuente de documentación sobre este tipo de cosas?


"rake db: migrate" intentará ejecutar todas las migraciones pendientes para su proyecto. Si solo desea volcar el esquema, haga un "rake db: schema: dump".
Pero creo que tienes un problema donde dice que la tabla ya existe. Una de sus migraciones está fallando porque la tabla que está intentando agregar ya existe en su base de datos. ¿Creaste uno a mano? ¿Tuviste una migración, pero no tienes una nota escrita para ella? Deberá corregir esto antes de poder escribir futuras migraciones. Si es solo un error, y la tabla está ahí y es correcta y desea ignorar esto. Mi recomendación es piratearlo comentando la tabla de creación en la migración fallida. Luego ejecuta "rake db: migrate". Entonces, pero la tabla de crear de nuevo. Esto actualizará su versión de esquema.
Asegúrate de anotar los puntos adecuados en todas las migraciones.


Descubrí que, ocasionalmente, cuando las cosas se ponen un poco raras, te encontrarás en una situación en la que Rails querrá ejecutar una migración que debería estar considerando ya hecha (la tabla ya existe, etc.). Puede marcar una migración como realizada encontrando su número (la parte del número al principio del nombre de archivo), ingresando a mysql y emitiendo una consulta de este modo:

insert into schema_migrations values(''20090521153438'');

(o cualquiera que sea el número de su migración)

O si se trata de una migración de complementos que se ejecuta con el migrate_plugin de Desert:

insert into plugin_schema_migrations values(''my_plugin'', ''005'');


Intente rake db:schema:dump o rake db:migrate:redo .


Tratar

RAILS_ENV=development rake db:drop

antes de

RAILS_ENV=development rake db:migrate

¡y se feliz!

Asegurándose de ejecutarlo en su entorno de prueba o desarrollo, ya que esto eliminará la base de datos / tablas


Utilice rake db:schema:dump .

$ rake -T | grep schema rake db:schema:dump # Create a db/schema.rb file that is portable # against any database supported by ActiveRecord

rake db:schema:dump vuelve a crear el archivo db/schema.rb sin ejecutar ninguna de sus migraciones de nuevo, o eliminando tablas (lo que implica perder los datos en esas tablas), por lo que es la forma menos invasiva que puede probar primero.



rake db:migrate:reset eliminará todas las tablas, ejecutará todas las migraciones y creará un nuevo archivo schema.rb .