Ho finito con 9 migrazioni effettivamente duplicate. (Penso che questo sia dovuto al fatto che ho installato/aggiornato Gem e/o effettuato le migrazioni su entrambi i miei sviluppatori e macchine di produzione, ma non sono completamente sicuro in questa fase.)Migrazioni contrassegni rotaie come migrate
Ho spostato un set di 9 duplicati da le rotaie directory sul server di produzione, ma ora che voglio db:migrate
sulla produzione, al fine di eseguire un altro la migrazione, sto diventando:
$ 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
Questo perché le migrazioni hanno effettivamente già stati eseguiti.
Preferisco evitare di fare db:migrate:down
e db:migrate:up
per ognuno - penso che questo significherà che i dati nel database di produzione sono persi. (In questo caso un paio di pagine statiche in Spree.)
C'è un modo per dire a questa installazione di Rails di dimenticare tutte le migrazioni in sospeso, contrassegnando in modo efficace tutte le migrazioni in sospeso come fatto?
Grazie - sembra che dovrebbe fare il trucco. Farò un tentativo. Penso di essere in questa situazione perché le 9 migrazioni coinvolte sono state create una volta ciascuna su entrambe le mie macchine dev e prod (quindi quella che è effettivamente la stessa migrazione ha due migrazioni ciascuna con il proprio timestamp). I primi 9 sono stati eseguiti, ma in seguito ne ho estratto altri 9 dalla mia macchina di sviluppo, quindi il reclamo sul tavolo già esistente. Mi sto ancora occupando dell'installazione e dell'aggiornamento delle gemme per quanto riguarda l'implementazione. –
Ehm, perché hai migrazioni duplicate uguali ma con timestamp diversi? L'idea alla base delle migrazioni è che hai una serie di migrazioni (cioè modifiche alla struttura del database) che tutti usano. Il database dispone quindi di una tabella per tenere traccia delle migrazioni che sono già state eseguite, pertanto non verranno eseguite due volte su ciascun ambiente (dev/produzione). –
Infatti. Penso che questo potrebbe essere perché in precedenza ho installato Gems (incluse le relative migrazioni) su entrambe le macchine senza rendermene conto. Devo ordinare il flusso di lavoro. –