1. 程式人生 > >mysql乾貨——MySQL 1215錯誤 外來鍵建立失敗

mysql乾貨——MySQL 1215錯誤 外來鍵建立失敗

在這裡插入圖片描述

在mysql建立表時,經常會建立失敗,其中建立外來鍵(foregin key)時有很多細節需要我們去留意,主要有以下幾種原因,1。兩個欄位的型別或大小嚴格不匹配。例如,如果一個是int(10),那麼外來鍵也必須設定成int(10),而不是int(11),也不能是tinyint。另外,你還必須確定兩個欄位是否都為signed或者unsigned,這兩欄位必須嚴格地一致匹配。
  2. 設定外來鍵的欄位沒有建立起索引,或者不是一個primary key(主鍵)。一般,需要建立外來鍵的資料表稱為子表,而相關聯的資料表稱為父表。建立外來鍵時所對應的父表的欄位必須要建立索引primary key。
  3. 其中一個或者兩個表是MyISAM引擎的表。若想要使用外來鍵約束,表必須是InnoDB引擎(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發生,但也不會產生外來鍵,只會建立索引)你需要檢查表的引擎型別。
  4. 外來鍵的名字不能重複。檢查該資料庫確保外健名字是唯一的,或者你可以在鍵名後面加上幾個隨機的字元以測試是否為此原因。
  5. 設定了ON DELETE SET NULL,但是相關的鍵的欄位設定成了NOT NULL值。通過修改外來鍵的屬性值或者把欄位屬性設定成allow null來解決。
  6. 確保你的Charset和Collate選項在表級和欄位級上的一致。
  7. 兩欄位設定的預設值不一致。一個欄位設定default為0,一個設定default為null,也是不可行的。
  8. ALTER宣告中有語法錯誤。
  文章來自:

https://www.itjmd.com/news/show-3228.html