MySQL .csv-laden nicht wegen "kann Nicht hinzufügen oder aktualisieren ein Kind Reihe: foreign key constraint fails"
Ich versuche zu laden .csv-Datei mit baseball-Zeitpläne in eine Tabelle der Spiele. Der csv-Inhalt der Datei wie folgt Aussehen:
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
und meine sql-Anweisung, um zu versuchen, und fügen Sie Sie ist:
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');
Aber ich bin immer der Fehler:
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`))
Oh, und hier ist die Beschreibung des Spiels-Tabelle:
+---------------+-------------+------+-----+---------+----------------+
| 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 | |
+---------------+-------------+------+-----+---------+----------------+
- Die nächste Zeit
show create table game
. Das obige istdesc game
auf diese Weise können wir sehen, die definition der Tabelle komplett.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie disable foreign key checks mithilfe
set foreign_key_checks = 0;
vor dem Eingang (stellen Sie sicher, dass Sie wieder mitSET foreign_key_checks = 1;
nach dem Lauf.Was Sie wirklich tun sollten, ist sicherzustellen, dass was auch immer Tabelle
hometeam_id
undawayteam_id
zeigen HABEN die Werte, die Sie einfügen. Wenn die team-Tabellen werden Daten eingefügt, die in Ihnen in der gleichen CSV-wie Sie Ihr Spiel Tabelle, tun Sie das team Tabellen ersten, aber das sieht nicht der Fall zu sein.Schließlich können Sie entfernen Sie die foreign-keys auf die hometeam_id und awayteam_id und Sie später hinzufügen, wie in diesem Beispiel:
ALTER TABLE table_name DROP FOREIGN KEY table_name_ibfk_1
;Sollten Sie deaktivieren foreigh Schlüssel überprüfen
und schalten Sie ihn wieder, nachdem der import
Und seien Sie vorsichtig mit diese option 😉
MySQL – Disable Foreign Key Checks oder Einschränkungen