gpt4 book ai didi

mysql - MySQL 中的语法错误 - 相同的语法在较早的表中有效

转载 作者:行者123 更新时间:2023-11-30 22:03:49 26 4
gpt4 key购买 nike

我正在构建一个小型数据库,但在最后一个表中的这两行中遇到语法错误。

它们是外键,这些行在它们最初出现的表中没有产生任何错误。

INVOICE_ID     INTEGER    NOT NULL   AUTO_INCREMENT   UNIQUE,
DONUT_ID VARCHAR(10) NOT NULL UNIQUE,

这两行是表中的 PK 和 FK,我认为这就是我遇到问题的地方,因为我使用的语法与我在没有生成任何错误的早期表中所做的语法相同。

下面是四个表的完整代码:

CREATE TABLE CUSTOMER (
CUST_ID INT NOT NULL AUTO_INCREMENT UNIQUE,
CUST_LNAME VARCHAR(25) NOT NULL,
CUST_FNAME VARCHAR(25) NOT NULL,
CUST_INITIAL CHAR(1),
CUST_STREET_NO VARCHAR(6),
CUST_STREET_NAME VARCHAR(25),
CUST_APT_NO VARCHAR(10),
CUST_CITY VARCHAR(25),
CUST_STATE CHAR(2),
CUST_ZIP_CODE CHAR(5),
CUST_HOME_AC CHAR(3),
CUST_HOME_PHONE CHAR(8),
PRIMARY KEY (CUST_ID)
)ENGINE = InnoDB;

CREATE TABLE INVOICE (
INVOICE_ID INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
CUST_ID INTEGER NOT NULL,
INV_DATE DATE NOT NULL,
SPECIAL_HANDLING VARCHAR(35),
PRIMARY KEY (INVOICE_ID),
FOREIGN KEY (CUST_ID) REFERENCES CUSTOMER(CUST_ID) ON UPDATE CASCADE
)ENGINE = InnoDB;

CREATE TABLE PRODUCT (
DONUT_ID VARCHAR(10) NOT NULL UNIQUE,
DONUT_NAME VARCHAR(25) NOT NULL,
DONUT_DESC VARCHAR(35) NOT NULL,
DONUT_PRICE DECIMAL(13,2) NOT NULL,
PRIMARY KEY (DONUT_ID)
)ENGINE = InnoDB;

CREATE TABLE INVOICE LINE ITEM (
INVOICE_ID INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
DONUT_ID VARCHAR(10) NOT NULL UNIQUE,
DONUT_QTY INTEGER NOT NULL,
PRIMARY KEY (INVOICE_ID, DONUT_ID),
FOREIGN KEY (INVOICE_ID) REFERENCES INVOICE(INVOICE_ID) ON UPDATE CASCADE,
FOREIGN KEY (DONUT_ID) REFERENCES PRODUCT(DONUT_ID) ON UPDATE CASCADE
)ENGINE = InnoDB;

最佳答案

第四个 CREATE TABLE 语句将因表名中的空格而失败:

CREATE TABLE INVOICE LINE ITEM ...

您应该使用不同的名称,不带空格。例如,您可以用下划线替换空格并使用 snake-case:

CREATE TABLE INVOICE_LINE_ITEM ...

关于mysql - MySQL 中的语法错误 - 相同的语法在较早的表中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42423008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com