日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql 添加外键时 error 150 问题总汇

發布時間:2025/3/15 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 添加外键时 error 150 问题总汇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

在很多實例中,這種錯誤的發生都是因為mysql一直以來都不能很好的支持的關系的問題, 更不幸的是它也并沒有指明到底是哪一個問題會導致上面那種錯誤,下面是error 150問題總匯

?

已知的原因: (已遇到過)

  • ?兩個字段的類型或者大小不嚴格匹配,例如,如果一個是INT(10), 那么外鍵也必須設置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令來查看字段的大小,因為一些查詢瀏覽器有時候把 int(10) 和int(11) 都顯示為integer。另外,你還必須確定兩個字段是否一個為 SIGNED,而另一個又是UNSIGNED, 這兩字段必須嚴格地一致匹配
  • ??你試圖引用的其中一個外鍵沒有建立起索引,或者不是一個primary key , 如果其中一個不是primary key 的放,你必須為它創建一個索引。
  • ?外鍵的名字是一個已經存在的一個鍵值了,這個時候,你應該檢查你的數據庫以確保外健名字是唯一的,或者你在鍵名后面加上幾個隨機的字符以測試是否是這個原因。
  • ??其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發生,但也不會產生外鍵),你可以通過查詢瀏覽器來設置表的引擎類型
  • ??你可能設置了ON DELETE SET NULL, 但是相關的鍵的字段又設置成了NOTS NULL 值。你可能通過修改cascade 的屬性值或者把字段屬性設置成 allow null 來搞定這個bug.
  • ??請確定你的Charset 和 Collate 選項在表級和字段級上的一致
  • ??你可能設置為外鍵設置了一個默認值,如 default=0
  • ??在這個關系里面,其中的一個字段是一個混合鍵值中的一個,它沒有自己獨立的索引,這時,你必須為它創建一個獨立的索引。
  • ??ALTER 聲明中有語法錯誤
  • 外鍵的引用類型不一樣,主鍵是int外鍵是char
  • 找不到主表中 引用的列
  • 主鍵和外鍵的字符編碼不一致
  • .還有要建立外鍵的話,要先建立索引。沒有建立索引也會出錯。
  • 我的問題解決方案是在sql后面加上了如下句話,ok!成功導入腳本?ENGINE=INNODB DEFAULT CHARSET=utf8;?charset對應的換成你的主鍵表的字符集!
  • ?

    轉載于:https://www.cnblogs.com/signheart/p/6595286.html

    總結

    以上是生活随笔為你收集整理的mysql 添加外键时 error 150 问题总汇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。