В итоге я эффективно продублировал 9 миграций. (Я думаю это потому, что я устанавливал/обновлял Gems и/или выполнял их миграции как на своей машине разработки, так и на рабочей машине, но на данном этапе я не совсем уверен.)
Я переместил один набор из 9 дубликатов из каталогов rails на производственный сервер, но теперь, когда я хочу db:migrate
на производстве, чтобы запустить другую миграцию, я получаю:
$ 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
Это потому, что миграция фактически уже выполнена
. Я бы предпочел не выполнять db:migrate:down
и db:migrate:up
для каждого из них — я думаю, что это будет означать, что данные в производственной базе данных будут потеряны (несколько статические страницы в Spree.)
Есть ли способ заставить эту установку Rails забыть обо всех ожидающих миграциях, эффективно король всех незавершенных миграций выполнен?