Как устранить «Foreign key constraint fails»

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

04.03.2011 01:05

Для многих своих таблиц Magento старается поддерживать целостность (непротиворечивость) данных между таблицами, и для этих целей использует ограничения для значений внешних ключей.
Выглядит это примерно так:

ALTER TABLE `directory_country_region_name`
	ADD CONSTRAINT `FK_DIRECTORY_REGION_NAME_REGION` 
		FOREIGN KEY (`region_id`) 
		REFERENCES `directory_country_region` (`region_id`) 
		ON DELETE CASCADE 
		ON UPDATE CASCADE
;


Если вы обновляете данные напрямую через SQL, вы можете столкнуться с сообщением «Foreign key constraint fails».
Сообщение означает, что обновляя записи одной таблицы, вы разорвали созданную командой «ADD CONSTRAINT» связь между её значениями и значениями другой таблицы, и MySQL видит, что целостность данных нарушена.
Соответственно, MySQL откажется выполнить вашу операцию и сообщит об ошибке «Foreign key constraint fails».

Если вы сознательно временно нарушаете целостность данных, то временно отключите проверку внешних ключей командой:
SET FOREIGN_KEY_CHECKS=0;


После выполнения команд, нарушающих ссылочную целостность и команд, восстанавливающих ссылочную целостность, верните контроль ссылочной целостности обратной командой:
SET FOREIGN_KEY_CHECKS=1;


Поделиться темой: