2012-03-24 21 views
6

heroku run rake db:migrate funciona bien para alterar la estructura de la base de datos de producción:¿Cómo llenar la base de datos de producción (heroku) con los datos de desarrollo? (rieles)

Migrating to CreateUsers (20120318090252) 
Migrating to AddIndexToUsersEmail (20120319191315) 
Migrating to AddPasswordDigestToUsers (20120319194632) 
Migrating to AddRememberTokenToUsers (20120323142854) 

Pero las entradas , los datos que he añadido a mi base de datos de desarrollo local no se han cargado en la base de datos de producción heroku .

¿Es esto normal, o hay una manera de hacer que las dos bases de datos coincidan?

Gracias de antemano.

+0

¿quiere decir que tiene datos en su caja local que desea en producción? ¿Cuántos datos es? ¿Completando tablas de búsqueda? – natedavisolds

Respuesta

6

Las migraciones pueden manejar tanto la estructura (esquema) como los datos, pero una vez que esté en funcionamiento, la suposición es que en la mayoría de los casos sus datos de producción son la fuente canónica de información. Si hay datos necesarios para configurar la base de datos, por ejemplo cosas como listas ("Mastercard, Visa, Amex) o datos de arranque (por ejemplo, configurar un usuario administrador) esto puede ir en el archivo" seeds .rb ". No hay nada integrado que hace una copia de una base de datos (esquema y contenido) y se aplica automáticamente -. este sería típicamente una cosa de una sola vez

(Going the otra dirección - la copia de la base de datos de producción a las instancias de control de calidad o de desarrollo es un caso de uso común. Al principio, podría pensar: Rails debería poder hacer esto. Pero copiar una base de datos de producción típica puede estar llena de problemas. El más importante es: copiar una base de datos de producción con información de usuario es un riesgo de seguridad significativo ; cualquier operación de copia debería, como mínimo, anonimizar a los usuarios. Un segundo problema es solo el tamaño de la base de datos: una base de datos de producción a menudo es útil o incluso necesario para reproducir problemas de rendimiento de la vida real u otros casos extremos, pero cualquier base de datos grande tardará mucho tiempo en replicarse y depende en gran medida de la base de datos específica que esté utilizando y de los permisos)

En resumen, Rails hace lo correcto con la migración: asume que las actualizaciones estructurales son correctas, pero requiere que complete los datos. ¡Espero que esto ayude!

8

Este es el comportamiento normal. rake db:migrate solo creará la estructura de su base de datos. Si desea duplicar los datos que ya tiene en desarrollo en Heroku, use el comando heroku db:push, o simplemente use seeds.rb si desea inicializar la base de datos con algunos registros fijos.

Cuestiones relacionadas