首页 文章

错误's (PK'和FK按正确的顺序尝试)

提问于
浏览
-1

(!)致命错误:未捕获异常'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 回答

  • 0

    您应该在加载 sportEvent 之前加载 eventsport . 如果您已经正确地执行了此操作,那么您的csv文件包含不一致的数据 - 包含无效 eventID 值的行 . 一种选择是忽略这些行,您可以在尝试插入之前查询事件是否存在,或者您可以忽略该错误 . 另一种选择是为缺少的ID创建一个事件,然后重新插入 sportEvent . 最简单和最差的选项是删除外键约束,这将允许您将无效数据插入数据库并暂时忽略该问题 .

相关问题