При внесении изменений в git нет ничего общего с базой данных.Как только вы запустите задачу rake, например, rake db:migrate
, чтобы внести изменения в базу данных, она будет автоматически отменена после того, как вы измените ветку. Вам нужно подготовить шаги отката.(Поскольку методы миграции в миграциях выполняются условно)
Ваша старая версия миграции отличалась от новой воссозданной миграции, поэтому приложение пыталось запустить файл миграции, не проверяя, существует ли таблица.
При каждом запуске rake db:migrate
для конкретной базы данных, он хранит версию миграции в вашей таблице schema_migrations
в дБ.Таким образом, при повторном вызове одни и те же грабли не будут пытаться создать таблицу с тем же именем.В приведенном выше случае у вас есть разные файлы миграции для создания одной и той же таблицы, а таблица schema_migration
не знает, удалили ли вы ветку со старым файлом миграции или таблица уже существует
Так что запустите следующую команду в вашей консоли rails,
ActiveRecord::Migration.drop_table :table_name
А затем запустите свой rake db:migrate