外键和数据导入

jon*_*boy 2 mysql foreign-key phpmyadmin

我有:

  • 一个 CSV 文件(5000 多条记录);
  • 一张空item桌子;
  • favourite桌;
  • 一些其他空表。

我想item用 CSV 文件的内容填充表格。然后我想在两个表之间创建一些外键关系。

我按什么顺序执行此操作?

每次尝试此操作时,我都会收到错误消息:

#1452 - Cannot add or update a child row: a foreign key constraint fails...
Run Code Online (Sandbox Code Playgroud)

请注意,我的空favourite表已经设置了一些外键约束。我正在使用 PhpMyAdmin 和 MySQL Workbench。

设置外键关系之前,我是否应该让所有表都填充数据?或者我是否建立关系然后填充数据?

Phi*_*lᵀᴹ 7

您有多种选择。您可以创建没有约束的表并在之后添加它们,或者创建带有外键的表并导入禁用外键检查的数据 - 只需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)
Run Code Online (Sandbox Code Playgroud)