2012-01-16 51 views
3

我無法將外鍵約束添加到我的數據庫。MySQL無法將外鍵約束添加到表

我在所有表上運行InnoDB引擎,並確保兩個表中的數據類型和大小相同。

此外,我已經嘗試使用MySQL命令行,phpMyAdmin和MySQL工作臺,但沒有運氣。

由於在MySQL工作臺中不允許我檢查索引列,也沒有選擇引用列,所以還有另一個我忽略的問題。

有什麼我應該找的東西?

我在幾乎所有的表格中都有測試數據,那會很重要嗎?

編輯:當我看到一個錯誤,通常是「#1005 - 不能創建表'db_name。#sql-43d_8e'(errno:150)」,根據文檔說到數據不匹配。否則MySQL Workbench不會讓我這樣做,所以我不知道這個問題。

+1

如果數據不匹配,則可能很重要... – prodigitalson 2012-01-16 18:12:31

+0

所有引用數據都是INT(10)類型... – guyfromfl 2012-01-16 18:13:06

+0

不,我的意思是如果值不匹配外國表。 – prodigitalson 2012-01-16 18:13:39

回答

1

如果您有數據,那麼無法正確使用外鍵正確鏈接,例如您在id_article = 10的「comments」中輸入內容,但在「articles」中沒有輸入id = 10 ..在這種情況下,您不能添加外鍵

+0

嗯讓我清除表格,然後再試一次......由於我添加了數據而沒有約束來保持數據的完整性,這可能是問題所在。 – guyfromfl 2012-01-16 18:14:39

4

您還應該檢查以確保您的列匹配。我遇到的問題是,我沒有注意到一個是有符號整數,另一個沒有簽名。

1

我有同樣的問題,被引用表中的主鍵的數據類型和外鍵是相同的,但我無法創建第二個表,因爲mysql無法添加外鍵約束。出於某種原因,它是我創建表格的順序。如果我創建第一個表,添加數據,然後創建第二個表,如果我創建第一個表和第二個表之前,我將數據添加到第一個表中沒有錯誤消息發生錯誤。