MySQL约束违规

4

当我在另一个MySQL数据库上使用我的Zend项目时,它能够完美运行。但是,当我将数据库导出并放到另一台服务器上时,同样的项目会出现以下错误:

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

您想要插入/更新到表格中的值,主表格customer中缺少customerId的值。

执行一个查询以查看该值是否存在。其中100是占位符值。

select customerId from customer where customerId = 100;

你需要先在客户表中创建customerId的值。

0

看起来有人在导出时忘记禁用外键检查了(mysqldump通常会默认包含它们)。

如果服务器上的数据没问题,您可以在导入之前使用SET foreign_key_checks = 0;暂时禁用检查。

从MySQL命令行的正常使用方式如下:

SET foreign_key_checks = 0;
SOURCE /path/to/sql/dump.sql;
SET foreign_key_checks = 1;

0
你是否完整地导出了带有表定义的数据库?也许在另一个数据库中不存在外键定义。或者可能数据类型太小了。如果你将customerId定义为tinyint,而值大于255,则该值将重新从1开始。如果子行查找该数字,则由于此截断而无法找到它。
尝试找出脚本中发生错误的行,并尝试查找它尝试插入的customerId值是否已经存在。
最重要的是先插入父表的数据,然后再插入外键的子表数据!一些工具在将数据导出到SQL脚本时会弄错这个顺序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接