我有一个新表,它对旧的旧表有一个外键约束。旧表中填充了大量数据,但是当我尝试向引用旧表中的行的新表中添加一行时,我会得到一个Cannot add or update a child row: a foreign key constraint fails错误。
如何向旧表中引用行的新表中添加行?
编辑这里是我尝试过的两个查询:
mysql> select user_pk from users where username = 'test_user';
+---------+
| user_pk |
+---------+
| 123766 |
+---------+
1 row in set (0.00 sec)
mysql> insert into uservisit (user_id) values (123766);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test_database`.`uservisit`, CONSTRAINT `user_id_refs_user_pk_37c3999c` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_pk`))我做错了什么吗?
发布于 2011-03-11 00:32:56
可以临时禁用外键检查,如下所示:
SET foreign_key_checks = 0;
...
do updates
...
SET foreign_key_checks = 1;最好确保所有更新后,所有的一切都是有序的外键,不过。
发布于 2011-03-10 17:51:30
插入新行时,带有外键的列中的值也必须存在于旧表中的引用列中。
也许,如果您通过一些查询和示例数据,它将更容易帮助。
发布于 2011-06-07 07:47:33
如果您正在使用5.5.13之前的MySQL版本,您可能会遇到以下错误:
MySQL 5.5 foreign key constraint fails when foreign key exists
https://stackoverflow.com/questions/5263618
复制相似问题