错误1064(mysql代码中为42000)

时间:2017-04-01 20:48:43

标签: mysql sql

当我将代码放入

CREATE TABLE EVENT (
    Event_ID SMALLINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    Event_Name VARCHAR(30) NOT NULL,
    Event_Date DATE NOT NULL,
    Event_Route VARCHAR(40) NOT NULL,
    Event_Location VARCHAR(60) NULL,
    Event_Cost DECIMAL(8,2) NOT NULL,
    Staff_ID SMALLINT FOREIGN KEY NOT NULL,
    Package_ID SMALLINT FOREIGN KEY NOT NULL,
    CONSTRAINT Staff_ID FOREIGN KEY (Staff_ID) REFERENCES STAFF (Staff_ID),
    CONSTRAINT Package_ID FOREIGN KEY (Package_ID) REFERENCES PACKAGE  (Package_ID)
);

我收到以下错误消息

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在'FOREIGN KEY NOT NULL,Package_ID SMALLINT FOREIGN附近使用的语法   KEY NOT NULL,CONSTRAINT Staff'在第8行

1 个答案:

答案 0 :(得分:1)

我认为错误非常清楚。您在Package_IdStaff_IdFOREIGN KEY)的定义中间有关键字。这些不是必需的,它们由constraint定义处理:

CREATE TABLE EVENT (
    Event_ID SMALLINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    Event_Name VARCHAR(30) NOT NULL,
    Event_Date DATE NOT NULL,
    Event_Route VARCHAR(40) NOT NULL,
    Event_Location VARCHAR(60) NULL,
    Event_Cost DECIMAL(8,2) NOT NULL,
    Staff_ID SMALLINT NOT NULL,
    Package_ID SMALLINT NOT NULL,
    CONSTRAINT Staff_ID FOREIGN KEY (Staff_ID) REFERENCES STAFF (Staff_ID),
    CONSTRAINT Package_ID FOREIGN KEY (Package_ID) REFERENCES PACKAGE  (Package_ID)
);

我会阻止你命名表Event甚至Events。该名称不是保留的,但它是MySQL中的关键字。