国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql處理添加外鍵時提示error 150 問題的解決方法

2024-07-24 12:49:26
字體:
來源:轉載
供稿:網友

像這種不能創建一個.frm 文件的報錯好像暗示著操作系統的文件的權限錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經被報告是一個mysql本身的bug并出現在mysql 開發者列表當中很多年了,然而這似乎又是一種誤導。

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

已知的原因:

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

2, 你試圖引用的其中一個外鍵沒有建立起索引,或者不是一個primary key , 如果其中一個不是primary key 的放,你必須為它創建一個索引。

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

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

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

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

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

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

9, ALTER 聲明中有語法錯誤

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

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

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

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

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

您可能感興趣的文章:

MySQL 創建主鍵,外鍵和復合主鍵的語句mysql外鍵(Foreign Key)介紹和創建外鍵的方法MySQL外鍵使用詳解mysql建立外鍵MySQL外鍵創建失敗1005原因匯總MYSQL建立外鍵失敗幾種情況記錄Can''t create table不能創建表深入mysql外鍵關聯問題的詳解解析在MySQL里創建外鍵時ERROR 1005的解決辦法解析MySQL創建外鍵關聯錯誤 - errno:150MySQL添加外鍵時報錯:1215 Cannot add the foreign key constraint的解決方法
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沐川县| 四平市| 古丈县| 襄垣县| 通州市| 象山县| 自贡市| 合肥市| 孝昌县| 凤阳县| 新泰市| 武冈市| 广安市| 阿拉善左旗| 林口县| 卢龙县| 蒙阴县| 彰化市| 丰都县| 昌黎县| 望江县| 板桥市| 丰县| 云安县| 墨脱县| 育儿| 桑日县| 阿拉善左旗| 福鼎市| 讷河市| 平阴县| 绍兴市| 方正县| 伊春市| 凤翔县| 辽阳市| 镇赉县| 栾城县| 邯郸市| 体育| 开平市|