我是php / sql的新手,我在使用外键的行上遇到语法错误。
语法错误或访问冲突:1064
$createQuery ="CREATE TABLE AthleteTable
(
athleteID INT(6) NOT NULL AUTO_INCREMENT,
lastName VARCHAR(20) NOT NULL,
firstName VARCHAR(30) NOT NULL,
gender CHAR(1) NOT NULL,
image VARCHAR(20) NOT NULL,
eventID INT(6) NOT NULL,
medal VARCHAR(6) NOT NULL,
CONSTRAINT foreign FOREIGN KEY (eventID) REFERENCES eventsTable(eventID),
PRIMARY KEY(athleteID)
)";
如果有人知道什么是错的话会感激一些帮助。
------------>
新错误:
插入数据AthleteTable失败SQLSTATE [23000]:完整性 约束违规:1452无法添加或更新子行:异类 键约束失败(
powlz1_in612
。AthleteTable
,CONSTRAINTAthleteTable_ibfk_1
外键(eventID
)参考eventsTable
(eventID
))
这是我制作表格的地方:
$createQuery ="CREATE TABLE eventsTable
(
eventID INT(6) NOT NULL AUTO_INCREMENT,
sport VARCHAR(20) NOT NULL,
event VARCHAR(30) NOT NULL,
PRIMARY KEY (eventID)
)";
$pdo->exec($createQuery);
$createQuery ="CREATE TABLE AthleteTable
(
athleteID INT(6) NOT NULL AUTO_INCREMENT,
firstName VARCHAR(20) NOT NULL,
lastName VARCHAR(20) NOT NULL,
gender VARCHAR(20) NOT NULL,
image VARCHAR(20) NOT NULL,
eventID INT(20) NOT NULL,
medal VARCHAR(6) NOT NULL,
CONSTRAINT SportEvents FOREIGN KEY (`eventID`) REFERENCES eventsTable(`eventID`),
PRIMARY KEY(`athleteID`)
)";
$pdo->exec($createQuery);
在查看其他问题之后,这一切似乎都是一个缺失的领域,但这两个表都包含一个eventID,所以我不明白为什么它失败了?
答案 0 :(得分:3)
$createQuery ="CREATE TABLE AthleteTable
(
athleteID INT(6) NOT NULL AUTO_INCREMENT,
lastName VARCHAR(20) NOT NULL,
firstName VARCHAR(30) NOT NULL,
gender CHAR(1) NOT NULL,
image VARCHAR(20) NOT NULL,
eventID INT(6) NOT NULL,
medal VARCHAR(6) NOT NULL,
CONSTRAINT FOREIGN KEY (eventID) REFERENCES eventsTable(eventID),
PRIMARY KEY(athleteID)
)";
你有两次FOREIGN
这个词。这解决了你的1064。
请阅读以下评论,了解由于参考表格中的设置问题而导致的1452错误。