2016-10-20 21 views
0

sqlfiddleでコンパイルしようとするとこのエラーが発生します.SQL構文にエラーがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックして、正しい構文が9行目の ')'近くで使用するようにしてください。MYSQLコードを実行しているときにエラーが発生しました - 超混乱しました

私が9行目を取り出すと、これを解決する方法がわかりません。

私はかなり新しいですが、MySQLのコミュニティ版からこれらのコマンドを実行できますか?

カスタマーテーブルを単独で実行すると、ピザテーブルが追加されますが、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テーブルに外部キー制約を追加しようとしましたが、1つのフィールドしか指定しませんでした。 OrderInformationテーブルには、主キーとして2つのフィールドがあります。したがって、制約を持つすべてのテーブルも両方の列を持つ必要があります。

テーブルにAUTO_INCREMENTとしてCustomerID int NOT NULL AUTO_INCREMENT,の列を持つことは意味がありません。それはちょうど外来のキー制約でなければなりません。あなたのデータベースモデルを与えます。

+0

驚くばかり!ああ、それは動作している多くありがとう! – Nippon87

関連する問題