2017-02-28 17 views
0
DROP Table if exists Users; 
CREATE Table Users(UserID varchar(200) PRIMARY KEY, 
Rating INTEGER NOT NULL, 
Location varchar(200), 
Country varchar(200) 
); 

DROP Table if exists Item; 
CREATE Table Item(ItemID integer PRIMARY KEY, 
name1 varchar(200) NOT NULL, 
currently INTEGER NOT NULL, 
buy_price INTEGER NOT NULL, 
first_bid INTEGER NOT NULL, 
started varchar(200) NOT NULL, 
ends varchar(200) NOT NULL, 
UserID varchar(200) NOT NULL, 
Description varchar(2000), 
FOREIGN KEY(UserID) REFERENCES Users 
); 

DROP Table if exists Categories; 
CREATE Table Categories(ItemID INTEGER NOT NULL, 
Category varchar(200) NOT NULL, 
PRIMARY KEY(ItemID, Category), 
FOREIGN KEY(ItemID) REFERENCES Item 
); 

DROP Table if exists Bids; 
CREATE Table Bids(ItemID INTEGER NOT NULL, UserID varchar(200) NOT NULL,  Amount varchar(200) NOT NULL, 
PRIMARY KEY(ItemID, UserID, Amount), 
FOREIGN KEY(ItemID) REFERENCES Item, 
FOREIGN KEY(UserID) REFERENCES Users 
); 

我是一個SQL noob,我只開始學習它。我在建立這個數據庫時遇到了麻煩。每次我使用mySQL運行它時,我都會收到一個錯誤,說它無法構建項目,類別或出價表,我認爲這是因爲我的外鍵以及我如何使它們結構化。幾個小時來我一直在用我的腦子,我似乎無法就我爲什麼不能建立我的桌子得出正確的結論。無法在MySQL中爲相關架構建立表格

任何人都可以爲我指出正確的方向。謝謝!

+0

你的外鍵似乎缺少* other *表中的列名稱 – Phil

回答

2

您的references子句需要引用該列。例如:

CREATE Table Item (
    ItemID integer PRIMARY KEY, 
    name1 varchar(200) NOT NULL, 
    currently INTEGER NOT NULL, 
    buy_price INTEGER NOT NULL, 
    first_bid INTEGER NOT NULL, 
    started varchar(200) NOT NULL, 
    ends varchar(200) NOT NULL, 
    UserID varchar(200) NOT NULL, 
    Description varchar(2000), 
    FOREIGN KEY(UserID) REFERENCES Users(UserID) 
----------------------------------------^ 
); 

您需要修復所有外鍵引用。

+0

Holy shit! Duhhh!非常感謝。甚至沒有看到!最後一個問題對不起!我修復了這些錯誤,但是當我在mySQL上運行這個文件時,我收到了一堆警告,你知道這可能與什麼有關嗎? – vampyfreak

+0

@ vampyfreak。 。 。在不知道警告的情況下,很難說。 –

+0

我得到的錯誤是: ERROR 1217(23000):無法刪除或更新父行,外鍵約束失敗 ERROR 1050(42S01):表「用戶」已經存在 ERROR 1217(23000):不能刪除或更新父行:外鍵約束失敗 錯誤1050(42S01):表'項'已存在 – vampyfreak