2016-11-19 22 views
1

我想爲我的數據庫課程項目運行一些基本的CREATE TABLE語句,並得到一些奇怪的錯誤。MySQL創建表語句奇怪的錯誤

enter image description here

當我創建表MANUF它運行良好,但是當我嘗試創建一個表,訂購,使用相同的語法,這是行不通的。另外,當我嘗試創建這個表時,我得到一個errno:150.我相信這與我的外鍵創建有關,但我並不確定。這是一個截圖。

enter image description here

我是相當新的使用MySQL,因此任何建議將不勝感激,謝謝。

+1

@LSerni謝謝,解決了這個問題哈哈。然而,不確定關於errno 150。 – Biggytiny

+1

請勿使用圖片發佈文字內容。您可以從命令窗口複製並粘貼文本。文字閱讀起來要容易得多,而不必要的圖像使得使用移動設備的讀者很難。在嘗試幫助查找解決方案時,您也無法從圖像中複製文本。還有更多理由避免使用圖像;你可以看到他們的列表[在這篇文章中](http://meta.stackoverflow.com/a/285557/62576)。只有在沒有其他方式證明問題時才應該使用圖像,這當然不是這種情況。謝謝。 –

回答

1

Order表上的錯誤是由ORDER作爲保留字引起的。您可以使用反引號將其指定爲「Order」,但如果您完全選擇其他名稱,則會更好。

錯誤150與外鍵有關。該密鑰必須絕對相同 - 確切的定義相同,或FK將錯誤失敗150

而且,必須有與該鍵定義一個可用的索引或一個兼容的(見啓巴庫在the comment on the MySQL manual page例子) 。以不同順序索引的相同字段將失敗。

首先,檢查這些密鑰在原始表中的定義方式。例如:

test1 varchar(50) not null 
test2 varchar(50) 

兼容。我認爲即使是不同的排序規則也足以將FK擊倒(但我沒有檢查過,其餘的我確信,從我個人的經歷中可以看出來)。

更新:我忘了提,如果使用InnoDB表,併發出SHOW ENGINE INNODB STATUS,散發出來的導語包含的爲什麼FK失敗的一個更好的解釋,地方從上大約三分之一。