Pregunta

¿rake db: migrate solo agrega nuevas migraciones, o elimina todas las migraciones / cambios y crea todo nuevo?

Creo que rake está arrojando un error porque está intentando acceder a un atributo de tabla en la migración 040 que se eliminó en la migración 042. de alguna manera mi base de datos y el rastrillo no están sincronizados y quiero solucionarlos.

para sus expertos: ¿es común que el rastrillo no esté sincronizado con las migraciones? ¿Cómo puedo evitar esto (no, no edito manualmente mi esquema o rastrillar archivos).

¿Fue útil?

Solución

Cada vez que crea una migración utilizando scripts (como script / generate model ...), se agrega una nueva migración al directorio correcto, lista para sincronizarse con la base de datos real.

Realmente rake db: migrate solo comprueba qué migraciones faltantes aún deben aplicarse a la base de datos sin preocuparse por las anteriores.

Por supuesto, si modifica la base de datos de otras maneras, es común obtener cosas que no están sincronizadas porque, como dijo, puede encontrarse aplicando una migración a algo que se modifica debajo.

Otros consejos

Cuando utiliza migraciones de rieles, se crea automáticamente una tabla llamada schema_migrations , que realiza un seguimiento de las migraciones que se han aplicado, almacenando el número de versión de cada migración (este es el número que precede al nombre de migración en el nombre del archivo, es decir, db / migrate / _20090617111204__migration.rb). Cuando ejecuta rake db: migrate para migrar hacia arriba, solo se ejecutarán las migraciones que no se hayan ejecutado previamente (es decir, su versión no está contenida en la tabla) (por esta razón, cambiando una migración que es ya ejecutado no tendrá ningún efecto al ejecutar db: migrate ). Al migrar hacia abajo, todas las versiones encontradas en schema_migrations que son mayores que la versión a la que está retrocediendo se deshacerán.

Una migración significa que pasa de la versión actual a una versión más nueva (como se dice en la primera respuesta). Usando rake db: migrate puedes aplicar cualquier cambio nuevo a tu esquema. Pero si desea revertir a una migración anterior, puede usar rake db: rollback para anular sus nuevos cambios si se definen incorrectamente. Precaución: al hacerlo, sus datos se perderán.

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