2010-02-10 13 views
10

Este es mi primer proyecto real de Ruby on Rails. Aprendí mi lección: no hice todos los cambios con migraciones, así que las cosas están un poco desordenadas.Cómo revertir para comenzar y recrear/reconstruir nuevas migraciones

¿Cuál es la mejor manera de comenzar de nuevo con los nuevos archivos de migración y reconstruir el esquema, etc.? Mi proyecto está demasiado avanzado para reconstruir todo el proyecto, pero no lo suficiente como para que me importe perder las migraciones que tengo hasta ahora. Tampoco me importa perder los datos en la base de datos. Estaba intentando retroceder al principio, pero parte está fallando.

Sé que este es un mal estado para estar, pero la lección aprendida.

EDIT: que acaba de eliminar todos los archivos de migraciones y reconstruido el archivo de esquema con db: schema: dump. Supongo que esto me pone en un estado limpio con mi base de datos existente, solo migraciones perdidas.

Respuesta

5

Su archivo schema.rb debe contener el esquema en cuestión de la base de datos. Puede usarlo como punto de partida para crear sus migraciones. Puede crear una nueva migración para cada tabla con el parámetro :force => true para sobrescribir la tabla anterior. Luego, puede eliminar las migraciones anteriores (probablemente también necesite eliminar sus entradas de la tabla schema_migrations).

Otra opción sería simplemente actualizar las migraciones anteriores para que coincidan con su esquema actual.

+0

Gracias - Acabo de eliminar las migraciones, vaciar el schema_migrations mesa, luego ejecutó 'rake db: reset'. Mi esquema no estaba completamente actualizado, así que tuve que hacer algunos ajustes a la base de datos después de eso. Si tengo que hacer esto otra vez, haría lo mismo, pero trataré de averiguar si hay una manera de volver a crear el archivo de esquema desde el estado actual de la base de datos. – 99miles

7

Si no está preocupado por la pérdida de datos y luego hacer

rake db:purge 

Sólo debe dejar su base de datos

+9

esto ha sido cambios a rake db: drop en Rails 3 (rake db: drop: all to drop para todos los entornos) – jvatic

+0

rake db: reset es más como que – montrealmike

9

si desea migrar algunos pasos hacia atrás se puede

rake db:rollback STEP=2 

Con esa opción se migrar su base de datos 2 migraciones hacia atrás. Si necesita más ayuda sobre los mandatos del rastrillo, tipo jus

rake -T 

ese comando mostrará una lista de todas las tareas que tiene en su aplicación.

+0

Lista todos los comandos que tienen una descripción. – Timo

Cuestiones relacionadas