這篇文章將為大家詳細講解有關MySQL建立外鍵失敗的原因有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設公司,專注網(wǎng)站建設公司、網(wǎng)站設計,有關企業(yè)網(wǎng)站設計方案、改版、費用等問題,行業(yè)涉及成都玻璃隔斷等多個領域,已為上千家企業(yè)服務,得到了客戶的尊重與認可。
原因分析:
1、 兩個字段的類型或者大小不嚴格匹配
例如,如果一個是INT(10), 那么外鍵也必須設置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令來查看字段的大小,因為一些查詢?yōu)g覽器有時候把 int(10) 和int(11) 都顯示為integer。
另外,你還必須確定兩個字段是否一個為 SIGNED,而另一個又是UNSIGNED, 這兩字段必須嚴格地一致匹配,更多關于signed 和 unsigned 的信息。
2、你試圖引用的其中一個外鍵沒有建立起索引或者不是一個primary key ,
如果其中一個不是primary key 的,你必須為它創(chuàng)建一個索引。
3、外鍵的名字是一個已經存在的一個鍵值了,這個時候,你應該檢查你的數(shù)據(jù)庫以確保外健名字是唯一的,或者你在鍵名后面加上幾個隨機的字符以測試是否是這個原因。
4、其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發(fā)生,但也不會產生外鍵),你可以通過查詢?yōu)g覽器來設置表的引擎類型。
5、你可能設置了ON DELETE SET NULL, 但是相關的鍵的字段又設置成了NOTS NULL 值。你可能通過修改cascade 的屬性值或者把字段屬性設置成 allow null 來搞定這個bug
6、請確定你的Charset 和 Collate 選項在表級和字段級上的一致
7、你可能設置為外鍵設置了一個默認值,如 default=0
8、在這個關系里面,其中的一個字段是一個混合鍵值中的一個,它沒有自己獨立的索引,這時,你必須為它創(chuàng)建一個獨立的索引。
9、ALTER 聲明中有語法錯誤
關于mysql建立外鍵失敗的原因有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章標題:mysql建立外鍵失敗的原因有哪些
本文URL:http://www.rwnh.cn/article22/jdcccc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、外貿建站、定制網(wǎng)站、網(wǎng)站設計、品牌網(wǎng)站設計、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)