Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL.csv加载失败,原因是;无法添加或更新子行:外键约束失败;_Mysql_Sql_Csv_Load - Fatal编程技术网

MySQL.csv加载失败,原因是;无法添加或更新子行:外键约束失败;

MySQL.csv加载失败,原因是;无法添加或更新子行:外键约束失败;,mysql,sql,csv,load,Mysql,Sql,Csv,Load,我正在尝试将带有棒球时间表的.csv文件加载到游戏表中。csv文件内容如下所示: 5/17/2011,8:10 PM,14,13,Kansas City,MO 5/18/2011,8:10 PM,14,16,Chicago,IL 5/19/2011,8:10 PM,14,16,Chicago,IL 5/20/2011,7:05 PM,26,14,Columbus,OH 我尝试插入它们的sql语句是: LOAD DATA LOCAL INFILE 'c:/ftpsite/comp.csv' IN

我正在尝试将带有棒球时间表的.csv文件加载到游戏表中。csv文件内容如下所示:

5/17/2011,8:10 PM,14,13,Kansas City,MO
5/18/2011,8:10 PM,14,16,Chicago,IL
5/19/2011,8:10 PM,14,16,Chicago,IL
5/20/2011,7:05 PM,26,14,Columbus,OH
我尝试插入它们的sql语句是:

LOAD DATA LOCAL INFILE 'c:/ftpsite/comp.csv' INTO TABLE game
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(@DATE_STR, time, awayteam_id, hometeam_id,locationcity,locationstate)
SET date = STR_TO_DATE(@DATE_STR, '%c/%e/%Y');
但我得到了一个错误:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`gamelydb`.`game`, CONSTRAINT `hometeam_id_refs_id` FOREIGN KEY (`hometeam_id`) REFERENCES `team` (`id`))
哦,下面是对游戏桌的描述:

+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| id            | int(11)     | NO   | PRI | NULL    | auto_increment |
| date          | date        | NO   |     | NULL    |                |
| time          | time        | NO   |     | NULL    |                |
| hometeam_id   | int(11)     | NO   | MUL | NULL    |                |
| awayteam_id   | int(11)     | NO   | MUL | NULL    |                |
| locationcity  | varchar(30) | NO   |     | NULL    |                |
| locationstate | varchar(20) | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

您应该禁用外键检查

SET foreign_key_checks = 0;
并在导入后将其切换回

SET foreign_key_checks = 1;
小心这个选项;)


您可以使用
设置外键检查=0禁用外键检查输入前(确保在运行后使用
设置外键\u checks=1;
将其设置回原位)

你真正应该做的是确保无论
hometeam\u id
awayteam\u id
指向哪个表,都有你要插入的值。如果团队表将数据插入到与游戏表相同的CSV中,请先做团队表,但情况并非如此

最后,您可以删除hometeam_id和awayteam_id上的外键,然后像下面的示例一样添加它们:
ALTER TABLE TABLE\u name DROP FOREIGN KEY TABLE\u name\u ibfk\u 1

下次使用
show create TABLE game
。上面是
desc game
,这样我们就可以完整地看到表定义。