2016-01-25 2 views
1

Вот настройка. Установите приложение API Ruby off Rails.Как можно получить «ActiveRecord :: DuplicateMigrationNameError» только с одним файлом миграции?

Он извлекает «приложение для создания базы данных» независимо через подмодуль git. Существует папка «db/migrate» с одним файлом миграции и файлом «db/structure.sql». Проект создания базы данных - это, по сути, сокращенный проект Rails - мы использовали Rails, потому что нам нужны задачи рейка, чтобы мы могли легко мигрировать.

Файл structure.sql по существу воссоздает нашу старую схему базы данных (мы решили сохранить код базы данных в отдельном репо из-за наличия нескольких приложений, которым необходимо получить доступ к базе данных, и желание максимально согласовать базу данных).

Если у меня rake db:create, мне сказали, что app_development и app_test есть. Я вручную удалил таблицы schema_migrations и schema_info из обоих. Фактически app_test, пуст и не содержит таблиц.

Если я запускаю грабли БД: мигрировать, я получаю сказал:

ActiveRecord::DuplicateMigrationNameError: 

Multiple migrations have the name YourMigrationToTableBlahBlah 

Как это возможно, и как я могу обойти эту ошибку, так что я могу перенести?

В какой-то момент я сделал git commit, который переименовал столбцы в 1 файл миграции в db/migration, но я удалил таблицы в app_development и app_test, а также таблицу schema_migrations, так что задача rake rake не должна быть жалуясь на это.

EDIT:

Одна вещь, которую я заметил, что во время выполнения bundle exec rake db:migrate является то, что путь к папке же миграции (например, «дб/миграции») добавляется к ActiveRecord::Tasks::DatabaseTasks.migrations_paths, но я не знаю, почему

ответ

0

Вы удалили что-то в schema_migrations, но вы их не запускали, а базы данных все еще exsist в db. Скопируйте ваши schema_migrations и ваши данные, затем попробуйте запустить «rake db: schema: load». Этот cmd может помочь вам перестроить базы данных и удалить данные

+0

Я отбросил базу данных и заново создал ее с помощью операторов postgres, и она по-прежнему дает ту же ошибку ... – Nona

+0

В «YourMigrationToTableBlahBlah» что-то не так, может быть, вы снова создайте столбец или таблицу в «YourMigrationToTableBlahBlah» – Cary

Смежные вопросы