尝试在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)
);
答案 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是没有意义的。它应该只是一个外键约束。鉴于您的数据库模型。