我有:
item表;favourite表;我想用CSV文件的内容填充item表。然后,我想在两个表之间创建一些外键关系。
我该怎么做呢?
每当我尝试这样做时,我总是会收到一个错误:
#1452 - Cannot add or update a child row: a foreign key constraint fails...注意,我的空favourite表已经设置了一些外键约束。我正在使用PhpMyAdmin和MySQL工作台。
在建立外键关系之前,是否应该使用数据填充所有表?还是设置关系,然后填充数据?
发布于 2017-03-14 14:44:43
你有几个选择。您可以在没有约束的情况下创建表,然后添加它们,或者用外键创建表&它们导入禁用外键检查的数据--只需在SET FOREIGN_KEY_CHECKS=0;会话中运行mysql暂时禁用它们。
例如:
mysql> insert into favourite values( 1,1);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`tmp`.`favourite`, CONSTRAINT `favourite_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`))
mysql> SET FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into favourite values( 1,1);
Query OK, 1 row affected (0.00 sec)发布于 2017-03-14 14:41:56
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> LOAD DATA INFILE ...
mysql> LOAD DATA INFILE ...
mysql> SET FOREIGN_KEY_CHECKS=1;发布于 2019-01-16 17:30:30
如果使用终端,请使用以下命令使用凭据登录到MySQL:
mysql -u[your_username] -p[your_password]使用下面的命令将MySQL外键约束检查设置为0:
SET FOREIGN_KEY_CHECKS = 0;使用如下所示的源命令导入数据库:
SOURCE /path/to/your/sql/file.sql并使用以下命令将MySQL外键约束设置为1:
SET FOREIGN_KEY_CHECKS = 1;P.S.在Ubuntu 14.04、16.04、18.04上测试
https://dba.stackexchange.com/questions/167141
复制相似问题