Php 外键语法错误
我是php/sql新手,外键行出现语法错误 语法错误或访问冲突:1064Php 外键语法错误,php,mysql,Php,Mysql,我是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
$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)
)";
如果有人知道出了什么问题,我会非常感谢你的帮助
------------>
新错误:
在删除表中插入数据失败SQLSTATE[23000]:完整性
约束冲突:1452无法添加或更新子行:外部
键约束失败(powlz1_in612
AthleteTable
,约束
AthleteTable\u ibfk\u 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,所以我不明白为什么它失败了
$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错误的评论,该错误是由于参考表上的设置问题而导致的。我更改了该错误,但仍然得到了错误,另一个文件中有一个错误,修复后以某种方式解决了该错误,谢谢。它存储在其他索引和列上,准备接受FK。但这至少消除了你的1064Got一个新的错误,1452。知道是什么原因吗?我用它编辑了原始帖子:)对,这个原始问题和答案解决了你的1064。1452将是下一个错误(一个不同的问题),因为引用的表尚未准备好接受FK
eventsTable(eventID)
需要准备好。相同的数据类型和索引。这必须首先发生