He terminado con 9 migraciones duplicadas de forma efectiva. (Creo que esto se debe a que instalé/actualicé Gems y/o obtuve sus migraciones en mis máquinas de desarrollo y producción, pero no estoy del todo seguro en este momento).Migraciones de Marcar rieles como migradas
He movido un juego de 9 duplicado de los carriles de directorios en el servidor de producción, pero ahora que quiero db:migrate
en la producción con el fin de ejecutar otra migración, estoy recibiendo:
$ bundle exec rake db:migrate RAILS_ENV=production
[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.checkout" is no longer supported
== CreatePages: migrating ====================================================
-- create_table(:pages)
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'pages' already exists: CREATE TABLE `pages` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `title` varchar(255), `body` text, `slug` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
Esto se debe a que las migraciones han sido efectivamente ya plazo.
Prefiero evitar hacer db:migrate:down
y db:migrate:up
para cada uno - Creo que esto significará que los datos en la base de datos de producción se perderán. (Un par de páginas estáticas en Spree en este caso.)
¿Hay alguna forma en que pueda decirle a esta instalación de Rails que olvide todas las migraciones pendientes, marcando efectivamente todas las migraciones pendientes como hechas?
Gracias - esto suena como debería hacer el truco. Voy a intentarlo. Creo que estoy en esta situación porque las 9 migraciones involucradas se crearon una vez en mis máquinas tanto de desarrollo como de desarrollo (por lo tanto, lo que efectivamente es la misma migración tiene dos migraciones cada una con su propia marca de tiempo). Los primeros 9 fueron ejecutados, pero luego obtuve otros 9 de mi máquina de desarrollo, de ahí la queja sobre la tabla que ya existe. Todavía estoy aprendiendo a instalar y actualizar Gems con respecto a la implementación. –
Um, ¿por qué tienes migraciones duplicadas que son las mismas pero con diferentes marcas de tiempo? La idea detrás de las migraciones es que tiene un conjunto de migraciones (es decir, cambios en la estructura de la base de datos) que todos utilizan. La base de datos tiene una tabla para realizar un seguimiento de las migraciones que ya se han ejecutado, por lo que no se ejecutarán dos veces en cada entorno (desarrollo/producción). –
De hecho. Creo que esto podría deberse a que anteriormente instalé gemas (incluidas sus migraciones asociadas) en ambas máquinas sin darme cuenta de la implicación. Necesito ordenar el flujo de trabajo. –