错误1064(mysql代码中为42000

错误1064(mysql代码中为42000,mysql,sql,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 DECIM

当我输入代码时

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服务器版本相对应的手册 使用near'外键不为NULL,包\u ID SMALLINT-FOREIGN'的语法 键不为空,第8行的“约束人员”


我认为这个错误很清楚。在代码的定义中,你有关键字,在代码的定义中,PuxAgEdID和<代码> StudioIDI/<代码>(<代码>外键< /代码>)。这些不是必需的,它们由<代码>约束< /代码>定义:

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)
);

<>我会劝阻你不要把表命名为“代码>事件<代码>或者甚至<代码>事件<代码>。这个名字不是保留的,但它是mysql中的关键字。

我有点困惑,你的意思是我中间有关键字。definition@Ruth只需补充一点说明,列定义
Staff\u ID SMALLINT外键不是NULL
Package\u ID SMALLINT外键NOT NULL
将被认为是错误的,因为它们不应包含引用。它仅在
约束下是必需的
@Dhruv Saxena我收到了与此代码相同的错误,但我已将其更改为
创建表(志愿者ID INT主键不为空自动递增,志愿者名字VARCHAR(40)不为空,志愿者姓氏VARCHAR(40)不为空,志愿者电子邮件VARCHAR(40)为空,急救枚举('Y','N')不为空,站点ID SMALLINT不为空,事件ID SMALLINT不为空,约束外键(站点ID)引用站点(站点ID)约束外键(Event_ID)引用Event(Event_ID));
@Ruth要扩展前面的注释,我认为必须从两个列定义中删除
外键
关键字,以防这是导致您端出现问题的原因(看起来答案中的
外键
职员ID
一起被错误地留下了)?如果您也尝试过,很抱歉,但是显然没有其他合理的方式让上述语法错误继续蔓延。@GordonLinoff,先生,我为入侵和吹毛求疵而道歉。虽然编辑队列目前已满,但本可以清除打字错误。