(!)致命错误:未捕获异常'PDOException',消息'SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(mowanj1_in605.sportEvent,CONSTRAINT sportEvent_ibfk_1 FOREIGN KEY(eventID)第222行/home/mowanj1/public_html/Web2/Assignment1/createAthlete.html.php中的REFERENCES事件(eventID))'(!)PDOException:SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:第222行/home/mowanj1/public_html/Web2/Assignment1/createAthlete.html.php中的外键约束失败(mowanj1_in605.sportEvent,CONSTRAINT sportEvent_ibfk_1 FOREIGN KEY(eventID)REFERENCES事件(eventID))
$createQuery = "CREATE TABLE sportEventMedal
sportEventMedalID INT NOT NULL AUTO_INCREMENT, sportEventID INT, medalID INT,
PRIMARY KEY (sportEventMedalID), FOREIGN KEY (sportEventID) REFERENCES sportEvent(sportEventID), FOREIGN KEY (medalID) REFERENCES medal(medalID)
$pdo->exec($createQuery);
while (! feof($file)) {
$temp = fgetcsv($file);
$insertQuery = "INSERT INTO sportEvent(eventID, sportID) VALUES('$temp[0]','$temp[1]')";
$pdo->exec($insertQuery);
}
fclose($file);
1 回答
您应该在加载
sportEvent
之前加载event
和sport
. 如果您已经正确地执行了此操作,那么您的csv文件包含不一致的数据 - 包含无效eventID
值的行 . 一种选择是忽略这些行,您可以在尝试插入之前查询事件是否存在,或者您可以忽略该错误 . 另一种选择是为缺少的ID创建一个事件,然后重新插入sportEvent
. 最简单和最差的选项是删除外键约束,这将允许您将无效数据插入数据库并暂时忽略该问题 .