Прежде всего вам необходимо понять, что db/schema.rb
отражает понимание ActiveRecord вашей базы данных в последний раз, когда запускалась задача db:schema:dump
Rake.Структура базы данных (как видно из db/schema.rb
) может или не может точно соответствовать тому, что вы видите в вашем каталоге db/migrate
: миграции можно было добавлять и удалять, параметры базы данных изменялись, инопланетяне, вещи могли быть изменены вручную (т.е. внемиграции), ...
Похоже, что FK были добавлены в вашу базу данных разработки, но не в вашу производственную базу данных, или они были удалены из производства (или проигнорированы), так что ваши базы данных не синхронизированы.Проверьте свою производственную базу данных с помощью инструмента mysql
CLI и посмотрите, есть ли там FK;если они не синхронизированы, то ваши базы данных синхронизируются вручную или с производственной миграцией.Возможно, вы сначала захотите сделать это с точной копией вашей производственной базы данных, чтобы вы могли убедиться в том, что все FK действительны, перед тем как развязать хаос в производственной системе.
Аналогичные вещи применимы кdb/structure.sql
если вы используете формат «сырой SQL» для управления вашей схемой.