2016-04-22 9 views
0

Mein Lehrer hat mir diesen SQL-Code zur Verfügung gestellt, und ich habe mich als root in phpmyadmin eingeloggt, eine Datenbank namens webstore hinzugefügt und dann versucht, diesen Code hinzuzufügen, und es gibt mir Fehler. Kann mir jemand sagen, was die Fehler verursachen könnte? Ich benutze einen Mac, also bin ich mir nicht sicher, ob das einen Unterschied macht, ich kann dir einen Link zu Dropbox mit zusätzlichen Informationen geben, falls nötig.SQL-Code funktioniert nicht in phpmyadmin mit Mac?

Dies ist die Dropbox Verbindung mit dem Code versehen (Webstore.sql): https://www.dropbox.com/sh/usfmbeyxqd2q1g5/AADoLFbsz8cL30EC76d60i40a?dl=0

Auch die Zip-Datei enthält Bilder des Fehlers, die ich erhielt. Bitte helfen !!

Die SQL-Anweisung der Fehler auftritt, ist

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 
); 

Der Fehler

  1. ein Komma oder Schließbügel erwartet wurde, liest. (in der Nähe von "CONSTRAINT" bei Position 153)
  2. Unerwarteter Anfang der Anweisung. (in der Nähe von "CustID" an Position 192)
  3. Nicht erkannter Anweisungstyp. (In der Nähe von "Informationsquellen" an Position 206)
+2

Bitte schreiben Sie Ihren Code hier, damit es für zukünftige SO Besucher erhalten bleibt. –

+0

Es wird nicht zulassen, dass ich all das einschließe, da es sich um Links handelt, und es besagt, dass neue Benutzer nicht mehr als zwei haben können. :( – katracho7

+1

Wenn Sie etwas NICHT NULL deklarieren, müssen Sie auch einen DEFAULT –

Antwort

0

Ihre PRIMARY KEY Linie muss ein Komma, nachdem es vor den 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 
); 

bearbeiten

Es stellt sich heraus, es gibt eine Menge Probleme mit der SQL waren. Die Tabellen wurden in der falschen Reihenfolge erstellt und die Datentypen waren falsch. Hier ist eine neu geschriebene Version, die ich getestet habe:

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

Ich habe das getan und ich bekomme immer noch andere Fehler. – katracho7

+0

Nach dem Hinzufügen Komma: SQL-Abfrage: TABLE shopping_cart CREATE ( CustID INTEGER NOT NULL, ProdID INTEGER NOT NULL, NumOfItems INTEGER, PRIMARY KEY CLUSTERED (CustID, ProdID), CONSTRAINT FK_Cust FOREIGN KEY FK_Cat (CustID DELETE) Referenzen Kunden (CustID) ON ON UPDATE RESTRICT einstelle, CONSTRAINT FK_Prod FOREIGN KEY FK_Prod (ProdID) Referenzen Produkte (ProdID) ON DELETE ON UPDATE RESTRICT RESTRICT ) MySQL sagt: Dokumentation # 1005 - Kann Tabelle 'webstore' nicht erstellen.''shopping_cart' (errno: 150" Fremdschlüssel Einschränkung ist falsch gebildet ") (Details ...) – katracho7

+1

@ katracho7 Ihr Lehrer klingt wie ein Idiot. Ich würde mich wundern, wenn der Code, den er geschrieben hat, auf jedem Betriebssystem funktioniert, aber in jedem Fall habe ich meine Antwort mit einer komplett neu geschriebenen Version aktualisiert, die die anderen Probleme beheben sollte, die Sie hatten. – Chris

Verwandte Themen