2016-10-20 4 views
0

Я получаю эту ошибку при попытке скомпилировать в sqlfiddle- У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «)» по строке 9Ошибка при запуске MYSQL-кода - Super confused

Если я выберу строку 9, она делает то же самое, я не уверен, как это исправить.

Я довольно новичок в этом, могу ли я запустить эти команды из сообщества MySQL?

Если я запускаю таблицу клиентов сам по себе, он работает, я добавляю таблицу Pizza, это нормально, но когда я добавляю таблицу OrderInformation, я начинаю получать эту ошибку. Я несколько раз просматривал код, есть ли что-то, что мне не хватает, когда дело доходит до таблицы 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

Какая у вас проблема? –

+0

Когда я запускаю свой код в скрипте SQL, это даст мне это. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с символом «)» в строке 9. Иногда я могу возиться с ним и заставить его уйти, а затем он дает мне сообщение о таблице OrderInformation, которая не нравится иностранным ключ. – Nippon87

ответ

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, как AUTO_INCREMENT в таблице OrderInformation. Это должно быть просто ограничение внешнего ключа. Учитывая вашу модель базы данных.

+0

Удивительный! Спасибо, много работает! – Nippon87

Смежные вопросы