运行MYSQL代码时出错 - 超级困惑

时间:2016-10-20 02:27:02

标签: mysql sql

尝试在sqlfiddle中编译时出现此错误 - 您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用')'在第9行

如果我采取第9行,它也会这样做,我不知道如何解决这个问题。

我对此很陌生,我可以从MySQL社区版运行这些命令吗?

如果我自己运行客户表它可以工作,我添加了Pizza表它很好,但是当我添加OrderInformation表时,我开始收到该错误。我已经完成了几次代码,在订单信息表中有什么我不知道的吗?我被困了。

CREATE TABLE Customer 
( 
CustomerID     int                 NOT NULL   AUTO_INCREMENT, 
FirstName      varchar(45)   NOT NULL, 
LastName       varchar(45)  NOT NULL, 
StreetAddress  varchar(45)  NOT NULL, 
City                    varchar(45)  NOT NULL, 
State                 varchar(2)   NOT NULL, 
ZipCode            varchar(5)     NOT NULL, 
HomePhone    INT(11)  , 
MobilePhone   INT(11) , 
OtherPhone     INT(11), 
PRIMARY KEY (CustomerID) 
); 



CREATE TABLE Pizza 
( 
PizzaID          INT                   NOT NULL   AUTO_INCREMENT, 
PizzaName   VARCHAR(45) NOT NULL, 
Description    VARCHAR(90), 
UnitPrice        DECIMAL           NOT NULL, 
PRIMARY KEY (PizzaID) 
); 


CREATE TABLE OrderInformation 
( 
OrderID             int          NOT NULL, 
CustomerID      int          NOT NULL  AUTO_INCREMENT, 
OrderDate        date       NOT NULL, 
PRIMARY KEY (CustomerID, OrderID), 
FOREIGN KEY(CustomerID) REFERENCES  Customer (CustomerID), 

);


CREATE TABLE OrderItem 
( 
OrderID     INT              NOT NULL, 
Quantity   SMALLINT(5), 
PizzaID   INT               NOT NULL, 
PRIMARY KEY (OrderID, PizzaID), 
FOREIGN KEY(PizzaID) REFERENCES Pizza (PizzaID), 
FOREIGN KEY(OrderID) REFERENCES  OrderInformation (OrderID) 
); 

1 个答案:

答案 0 :(得分:1)

你的问题是你留下了一个逗号,,它不应该在这里:

CREATE TABLE OrderInformation 
( 
OrderID             int          NOT NULL, 
CustomerID      int          NOT NULL  AUTO_INCREMENT, 
OrderDate        date       NOT NULL, 
PRIMARY KEY (CustomerID, OrderID), 
FOREIGN KEY(CustomerID) REFERENCES  Customer (CustomerID), --<--------- here
);

删除它,你应该没事。

我注意到还有另一个问题。

OrderItem表上,您尝试向OrderInformation表添加外键约束,但您只指定了一个字段。 OrderInformation表有两个字段作为主键,因此每个对其有约束的表也应该有两列。

另外,在CustomerID int NOT NULL AUTO_INCREMENT,表中将OrderInformation列作为AUTO_INCREMENT是没有意义的。它应该只是一个外键约束。鉴于您的数据库模型。