Php 外键语法错误

Php 外键语法错误,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

我是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)

    )";
如果有人知道出了什么问题,我会非常感谢你的帮助

------------>

新错误:

在删除表中插入数据失败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)
需要准备好。相同的数据类型和索引。这必须首先发生