3 回答

TA貢獻1898條經驗 獲得超8個贊
如果您的表使用InnoDB引擎,通常會出現此錯誤。在這種情況下,您將必須刪除外鍵,然后執行alter table并刪除列。
但是棘手的部分是您不能使用列名刪除外鍵,而必須找到用于為其索引的名稱。為此,請發出以下選擇:
SHOW CREATE TABLE區域;
這應該顯示索引的名稱,如下所示:
約束外region_ibfk_1鍵(country_id)參考 country(id)關于刪除無作用更新無作用
現在只需發出:
修改表區域丟棄外鍵 region_ibfk_1;
最后是:
更改表區域放置列country_id;
而且你很好走!

TA貢獻1993條經驗 獲得超6個贊
這確實是一個外鍵錯誤,您可以使用perror找出:
shell$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed
要查找有關失敗原因的更多詳細信息,可以使用SHOW ENGINE INNODB STATUS并查找“最新外來錯誤”部分,其中包含有關錯誤原因的詳細信息。
在您的情況下,很可能是因為某些內容引用了country_id列。

TA貢獻1816條經驗 獲得超6個贊
您還可能由于嘗試刪除不存在的外鍵而收到此錯誤。因此,在刪除外鍵時,請始終確保它們確實存在。
如果外鍵確實存在,并且仍然出現此錯誤,請嘗試以下操作:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
//將外鍵放在這里!
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
這總是對我有用:)
添加回答
舉報