Mysql нарушение ограничения - PullRequest
2 голосов
/ 13 марта 2011

Когда я использую свой проект Zend на моей другой базе данных MySQL, он работает как шарм. Но когда я экспортирую базу данных и помещаю ее на другой сервер, тот же проект выдает следующую ошибку:

Message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`devel`.`Service`, CONSTRAINT `Service_ibfk_1` FOREIGN KEY (`customerId`) REFERENCES `customer` (`customerId`)) 

Кто-нибудь знает, что это такое?

Ответы [ 3 ]

0 голосов
/ 13 марта 2011

Кажется, что кто-то забыл отключить проверки внешнего ключа в экспорте (mysqldump обычно включает их по умолчанию).

Если на сервере все в порядке, вы можетеиспользуйте SET foreign_key_checks = 0; перед импортом, чтобы временно отключить проверку.

Обычное использование из командной строки MySQL будет:

SET foreign_key_checks = 0;
SOURCE /path/to/sql/dump.sql;
SET foreign_key_checks = 1;
0 голосов
/ 13 марта 2011

Вы экспортируете базу данных полностью с определениями таблиц? Возможно, определение внешнего ключа отсутствует в другой базе данных. Или, возможно, тип данных слишком мал. Если вы определили customerId, скажем, как tinyint, и значение становится больше 255, значение начинается с единицы снова. Если дочерняя строка ищет это число, если не найдет его из-за этого усечения.

Попробуйте найти, в какой строке в вашем скрипте возникает ошибка, и попытайтесь выяснить, существует ли уже значение customerId, которое он пытается вставить.

Самое главное, что сначала вставляются данные для родительской таблицы, а затем данные для дочерних таблиц внешнего ключа! Некоторые инструменты неправильно используют этот порядок при экспорте данных в сценарий sql.

0 голосов
/ 13 марта 2011

Значение, которое вы хотите вставить / обновить в таблице, значение customerId отсутствует в основной таблице customer

. Выберите, чтобы увидеть, существует ли значение.Где 100 - это значение заполнителя.

select customerId from customer where customerId = 100;

Сначала необходимо создать значение customerId в таблице клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...