最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

mysql處理添加外鍵時error150問題_MySQL

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 17:57:21
文檔

mysql處理添加外鍵時error150問題_MySQL

mysql處理添加外鍵時error150問題_MySQL:Mysql外鍵 bitsCN.com 當(dāng)你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的。像這種不能創(chuàng)建一個.frm 文件的報錯好像暗示著操作系統(tǒng)的文件的權(quán)限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經(jīng)被報
推薦度:
導(dǎo)讀mysql處理添加外鍵時error150問題_MySQL:Mysql外鍵 bitsCN.com 當(dāng)你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的。像這種不能創(chuàng)建一個.frm 文件的報錯好像暗示著操作系統(tǒng)的文件的權(quán)限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經(jīng)被報

Mysql外鍵

bitsCN.com

當(dāng)你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的。像這種不能創(chuàng)建一個.frm 文件的報錯好像暗示著操作系統(tǒng)的文件的權(quán)限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經(jīng)被報告是一個mysql本身的bug并出現(xiàn)在mysql 開發(fā)者列表當(dāng)中很多年了,然而這似乎又是一種誤導(dǎo)。

在很多實例中,這種錯誤的發(fā)生都是因為mysql一直以來都不能很好的支持的關(guān)系的問題, 更不幸的是它也并沒有指明到底是哪一個問題會導(dǎo)致上面那種錯誤,下面我把導(dǎo)致這個可怕 的150錯誤的常見原因列出來了,并且我以可能性的大小作了排序

已知的原因:

1, 兩個字段的類型或者大小不嚴(yán)格匹配,例如,如果一個是INT(10), 那么外鍵也必須設(shè)置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令來查看字段的大小,因為一些查詢?yōu)g覽器有時候把 int(10) 和int(11) 都顯示為integer。另外,你還必須確定兩個字段是否一個為 SIGNED,而另一個又是UNSIGNED, 這兩字段必須嚴(yán)格地一致匹配,更多關(guān)于signed 和 unsigned 的信息,請參閱:http://www.verysimple.com/blog/?p=57

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è)置了一個默認(rèn)值,如 default=0

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

9, ALTER 聲明中有語法錯誤

1、外鍵的引用類型不一樣,主鍵是int外鍵是char


2、找不到主表中 引用的列


3、主鍵和外鍵的字符編碼不一致


4.還有要建立外鍵的話,要先建立索引。沒有建立索引也會出錯。


我的問題解決方案是在sql后面加上了如下句話,ok!成功導(dǎo)入腳本
ENGINE=INNODB DEFAULT CHARSET=utf8;
charset對應(yīng)的換成你的主鍵表的字符集!

bitsCN.com

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mysql處理添加外鍵時error150問題_MySQL

mysql處理添加外鍵時error150問題_MySQL:Mysql外鍵 bitsCN.com 當(dāng)你試圖在mysql中創(chuàng)建一個外鍵的時候,這個出錯會經(jīng)常發(fā)生,這是非常令人沮喪的。像這種不能創(chuàng)建一個.frm 文件的報錯好像暗示著操作系統(tǒng)的文件的權(quán)限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經(jīng)被報
推薦度:
標(biāo)簽: 錯誤 解決 error
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top