2015-07-06 127 views
0

我真的不確定是什麼問題,但我不斷收到我試圖創建的Works_On表上的錯誤。MySQL phpMyAdmin:錯誤150(#1005)

CREATE TABLE Works_On(tid INT NOT NULL, startingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id INT, Primary Key(id), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(id) REFERENCES Cases(id)); 

CREATE TABLE Cases(id INT NOT NULL AUTO_INCREMENT, priority INT, name VARCHAR(255) NOT NULL, description TEXT, completionDate datetime, status VARCHAR(20), cid INT, Foreign Key(cid) REFERENCES Contact(cid), Primary Key(id)); 

    CREATE TABLE Gives_Problem_To(tid INT NOT NULL, onDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cid INT NOT NULL, Primary Key(tid), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(cid) REFERENCES Contact(cid)); 

我得到的錯誤是:#1005 - 無法創建表

我試圖找出這個錯誤是什麼,我得到這個:

Storage Engines 
InnoDB Documentation 

Supports transactions, row-level locking, and foreign keys 

所以這讓我認爲它與我的外鍵有關係,但我不知道它的真正問題。

編輯:我試圖將案件的CREATE TABLE語句移動到頂部的情況下,外鍵問題是由於Case表未被引用之前引起的,現在我的phpAdmin被卡在加載...

+0

您必須首先創建「Team」表。 –

+0

可能重複的[MySQL外鍵錯誤1005 errno 150](http://stackoverflow.com/questions/4063141/mysql-foreign-key-error-1005-errno-150) –

+0

團隊表已存在。我認爲Cases表的create table語句應該在頂部。我試圖確定這是真實的,但myPhpAdmin被凍結,所以我無法驗證錯誤消失後,我將Create Table Case語句粘貼到頂部。 – Kelbe

回答

0

移動創建Table語句的例子以解決問題。任何時候當你在一個表上創建一個外鍵約束時,該表必須存在才能引用它。解決方案如下所示:

CREATE TABLE Cases(id INT NOT NULL AUTO_INCREMENT, priority INT, name VARCHAR(255) NOT NULL, description TEXT, completionDate datetime, status VARCHAR(20), cid INT, Foreign Key(cid) REFERENCES Contact(cid), Primary Key(id)); 

CREATE TABLE Gives_Problem_To(tid INT NOT NULL, onDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cid INT NOT NULL, Primary Key(tid), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(cid) REFERENCES Contact(cid)); 

CREATE TABLE Works_On(tid INT NOT NULL, startingDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP, id INT, Primary Key(id), Foreign Key(tid) REFERENCES Team(tid),Foreign Key(id) REFERENCES Cases(id)); 
相關問題