我有一个新表,它对旧的旧表有一个外键约束。旧表填充了大量数据,但是当我尝试向引用旧表中的行的新表添加行时,出现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`))
我做错了吗?
答案 0 :(得分:4)
您可以临时禁用外键检查,如下所示:
SET foreign_key_checks = 0;
...
do updates
...
SET foreign_key_checks = 1;
更好地确保在所有更新之后,所有内容都按顺序排列外键。
答案 1 :(得分:0)
插入新行时,使用外键放入列的值也必须存在于旧表的引用列中。
也许如果你通过一些查询和示例数据,它会更容易提供帮助。
答案 2 :(得分:0)
如果您使用5.5.13之前的MySQL版本,则可能遇到此错误:
MySQL 5.5 foreign key constraint fails when foreign key exists