2016-04-22 9 views
0

私の先生がこのsqlコードを私に提供しました。そして、phpmyadminにrootとしてログインし、webstoreというデータベースを追加してからこのコードを追加しようとしましたが、エラーが出ます。エラーを引き起こす原因を教えてくれる人はいますか?私はMacを使用していますので、違いがあるかどうかはわかりません。必要に応じて追加情報を使ってDropboxへのリンクを付けることができます。macを使用しているphpmyadminではsqlコードが機能していませんか?

これは(Webstore.sql)提供されたコードとドロップボックスリンクされている:https://www.dropbox.com/sh/usfmbeyxqd2q1g5/AADoLFbsz8cL30EC76d60i40a?dl=0

はまた、zipファイルは、私が受信したエラーの画像を含みます。助けてください!!

SQL文のエラーが発生したのは

CREATE TABLE Shopping_Cart (
    CustID INTEGER NOT NULL, 
    ProdID INTEGER NOT NULL, 
    NumOfItems INTEGER, 
    PRIMARY KEY CLUSTERED (CustID, ProdID) 
    CONSTRAINT FK_Cust FOREIGN KEY FK_Cat (CustID) 
    REFERENCES Customers (CustID) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT, 
    CONSTRAINT FK_Prod FOREIGN KEY FK_Prod (ProdID) 
    REFERENCES Products (ProdID) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT 
); 

でエラーがコンマまたは閉じ括弧が期待されていた

  1. を読み込みます。 (位置153の "CONSTRAINT"の近く)
  2. 予期しないステートメントの開始。 (位置192の "CustID"の近く)
  3. 認識できない文の種類。 (位置206に近い "REFERENCES")
+2

今後のSO訪問者のために保存されるようにここにコードを投稿してください。 –

+0

彼らはリンクなので、私はそれをすべて含めることはできませんし、新しいユーザーは2つ以上を持つことはできないと言います。 : – katracho7

+1

あなたが何かを宣言していないなら、DEFAULTを指定する必要があります –

答えて

0

あなたPRIMARY KEYラインはCONSTRAINT前に後にコンマが必要です。

CREATE TABLE Shopping_Cart (
    CustID INTEGER NOT NULL, 
    ProdID INTEGER NOT NULL, 
    NumOfItems INTEGER, 
    PRIMARY KEY CLUSTERED (CustID, ProdID), 
    CONSTRAINT FK_Cust FOREIGN KEY FK_Cat (CustID) 
    REFERENCES Customers (CustID) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT, 
    CONSTRAINT FK_Prod FOREIGN KEY FK_Prod (ProdID) 
    REFERENCES Products (ProdID) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT 
); 

編集

これは、SQLと多くの問題があったが判明しました。テーブルが間違った順序で作成され、データ型が間違っていました。私がテストしたリライトされたバージョンです:

DROP DATABASE IF EXISTS WebStore; 
CREATE DATABASE WebStore; 
USE WebStore; 

CREATE TABLE Categories (
    CatID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    Name VARCHAR(20) NOT NULL, 
    Descr VARCHAR(120) NOT NULL, 
    IconURL VARCHAR(64) NOT NULL, 
    PRIMARY KEY (CatID) 
); 

CREATE TABLE Products (
    ProdID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    Name VARCHAR(20) NOT NULL, 
    Category INTEGER UNSIGNED, 
    Descr VARCHAR(120) NOT NULL, 
    Price FLOAT NOT NULL, 
    Stock INTEGER UNSIGNED NOT NULL, 
    IconURL VARCHAR(64) NOT NULL, 
    PRIMARY KEY (ProdID), 
    CONSTRAINT FK_Cat FOREIGN KEY FK_Cat (Category) 
     REFERENCES Categories (CatID) 
     ON DELETE RESTRICT 
     ON UPDATE RESTRICT 
); 

INSERT INTO Categories VALUES(null,"Laptops","Small computers you can carry","http://localhost/images/laptop.jpg"); 
SET @laptops := LAST_INSERT_ID(); 
INSERT INTO Categories VALUES(null,"Desktops","Big computers you cannot carry","http://localhost/images/desktop.jpg"); 
SET @desktops := LAST_INSERT_ID(); 
INSERT INTO Categories VALUES(null,"Tablets"," Flat things you lose frequently","http://localhost/images/tablet.jpg"); 
SET @tablets := LAST_INSERT_ID(); 

INSERT INTO Products VALUES(null,"DULL 1200",@desktops,"A big dull machine",1290.99,23,"http://localhost/images/dull1200.jpg"); 
INSERT INTO Products VALUES(null,"8P Totalo",@desktops,"Almost as big as the DULL",990.99,2,"http://localhost/images/8ptotalo.jpg"); 
INSERT INTO Products VALUES(null,"LaNuveau Bingster",@desktops,"Comes in blue and red",690.99,12,"http://localhost/images/lanuveaubingster.jpg"); 

INSERT INTO Products VALUES(null,"DULL 122",@laptops,"Small, portable and useless",422.99,4,"http://localhost/images/dull122.jpg"); 
INSERT INTO Products VALUES(null,"8P Tootsie",@laptops,"Sticky and too heavy",559.99,12,"http://localhost/images/8ptootsie.jpg"); 
INSERT INTO Products VALUES(null,"LaNuveau Shoobie XT",@laptops,"Weighs a ton but looks sharp",1690.99,122,"http://localhost/images/lanuveaushoobiext.jpg"); 

INSERT INTO Products VALUES(null,"Motor Roller 12",@tablets,"The only one with a oval screen",422.99,4,"http://localhost/images/mr12.jpg"); 
INSERT INTO Products VALUES(null,"SamSings OffKey",@tablets,"Needs duct tape to run",559.99,2,"http://localhost/images/samsingsOK.jpg"); 
INSERT INTO Products VALUES(null,"jPet 12",@tablets,"The first that kinda sorta works",16290.99,722,"http://localhost/images/jpet12.jpg"); 

CREATE TABLE Customers (
    CustID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    FirstName VARCHAR(40) NOT NULL, 
    LastName VARCHAR(40) NOT NULL, 
    Address VARCHAR(60) NOT NULL, 
    City VARCHAR(40) NOT NULL, 
    State VARCHAR(20) NOT NULL, 
    Zip VARCHAR(5) NOT NULL, 
    PRIMARY KEY (CustID) 
); 

INSERT INTO Customers VALUES(null,"Gerald","Bostock","1234 TAAB Drive","St. Cleve","FL","12345"); 
INSERT INTO Customers VALUES(null,"Suzy","Creamcheese","8722 Zappa Road","Paris","TX","75460"); 

CREATE TABLE Shopping_Cart (
    CustID INTEGER UNSIGNED NOT NULL, 
    ProdID INTEGER UNSIGNED NOT NULL, 
    NumOfItems INTEGER, 
    PRIMARY KEY CLUSTERED (CustID, ProdID), 
    CONSTRAINT FK_Cust FOREIGN KEY FK_Cat (CustID) 
     REFERENCES Customers (CustID) 
     ON DELETE RESTRICT 
     ON UPDATE RESTRICT, 
    CONSTRAINT FK_Prod FOREIGN KEY FK_Prod (ProdID) 
     REFERENCES Products (ProdID) 
     ON DELETE RESTRICT 
     ON UPDATE RESTRICT 
); 

INSERT INTO Shopping_Cart VALUES("1","4","2"); 
INSERT INTO Shopping_Cart VALUES("1","9","1"); 
+0

私はそれをしました。まだ他のエラーが発生しています。 – katracho7

+0

カンマを追加した後: SQLクエリ: をTABLE Shopping_Cart( お客様ID INTEGER NOT NULL、 PRODID INTEGER NOT NULL、 NumOfItems INTEGER、 PRIMARY KEY CLUSTERED(お客様ID、PRODID)、 CONSTRAINT FK_Cust FOREIGN KEY FK_Cat(お客様IDをCREATE DELETE ON) REFERENCESお客様(お客様ID) REFERENCES製品(PRODID) は をRESTRICT UPDATE ON をRESTRICT DELETE ON CONSTRAINT FK_Prod FOREIGN KEY FK_Prod(PRODID)、RESTRICT UPDATE ON をRESTRICT) #1005 - テーブル 'webstore'.shopping_cart'を作成できません。(エラー:150"外部キー制約が正しくありません ")(詳細...) – katracho7

+1

@ katracho7先生は馬鹿のように聞こえます。彼が書いたコードがどのオペレーティングシステムでも動作するのであれば、私は驚くかもしれませんが、私はあなたが持っていた他の問題を修正すべき完全に書き換えられたバージョンで私の答えを更新しました。 – Chris

関連する問題