mysql建立外鍵失敗的原因有哪些

這篇文章將為大家詳細講解有關(guān)MySQL建立外鍵失敗的原因有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站設(shè)計方案、改版、費用等問題,行業(yè)涉及成都玻璃隔斷等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認可。

原因分析:

1、 兩個字段的類型或者大小不嚴格匹配

例如,如果一個是INT(10), 那么外鍵也必須設(shè)置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令來查看字段的大小,因為一些查詢?yōu)g覽器有時候把 int(10) 和int(11) 都顯示為integer。

另外,你還必須確定兩個字段是否一個為 SIGNED,而另一個又是UNSIGNED, 這兩字段必須嚴格地一致匹配,更多關(guān)于signed 和 unsigned 的信息。

2、你試圖引用的其中一個外鍵沒有建立起索引或者不是一個primary key ,

如果其中一個不是primary key 的,你必須為它創(chuàng)建一個索引。

3、外鍵的名字是一個已經(jīng)存在的一個鍵值了,這個時候,你應(yīng)該檢查你的數(shù)據(jù)庫以確保外健名字是唯一的,或者你在鍵名后面加上幾個隨機的字符以測試是否是這個原因。

4、其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發(fā)生,但也不會產(chǎn)生外鍵),你可以通過查詢?yōu)g覽器來設(shè)置表的引擎類型。

5、你可能設(shè)置了ON DELETE SET NULL, 但是相關(guān)的鍵的字段又設(shè)置成了NOTS NULL 值。你可能通過修改cascade 的屬性值或者把字段屬性設(shè)置成 allow null 來搞定這個bug

6、請確定你的Charset 和 Collate 選項在表級和字段級上的一致

7、你可能設(shè)置為外鍵設(shè)置了一個默認值,如 default=0

8、在這個關(guān)系里面,其中的一個字段是一個混合鍵值中的一個,它沒有自己獨立的索引,這時,你必須為它創(chuàng)建一個獨立的索引。

9、ALTER 聲明中有語法錯誤

關(guān)于mysql建立外鍵失敗的原因有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章標題:mysql建立外鍵失敗的原因有哪些
本文URL:http://bm7419.com/article22/jdcccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)外貿(mào)建站、定制網(wǎng)站網(wǎng)站設(shè)計、品牌網(wǎng)站設(shè)計網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)