Изменяя все свои миграции, вы создали «новые» миграции.rails db:migrate
пытается применить эти "новые" миграции к уже существующей базе данных.(Список примененных миграций содержится в таблице schema_migrations
).Мы видим, что все миграции down
не были применены.Включая down 20190306060545 Create product
.
Поскольку это работающая производственная база данных, предположительно таблица product
уже существует.Когда Rails запускает миграцию 20190306060545 Create product
, которая, по-видимому, пытается create_table :product
, она потерпит неудачу, потому что product
уже существует.
Один из способов избежать этого - сначала проверить, существует ли таблица в ваших миграциях «создания таблицы»,Если это произойдет, ничего не делайте.
if table_exists?(:product)
return
end
Чтобы воспроизвести это в разработке ...
- Проверьте исходные миграции.
- Создайте свежую схему изчто:
rails db:migrate:reset
- Проверьте новые комбинированные миграции.
- Попробуйте выполнить миграцию:
rails db:migrate