像這種不能創建一個.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 聲明中有語法錯誤
最后:建立外鍵有點麻煩,可以直接用Myeclipse生成ddl。。。
MYSQL建立外鍵失敗幾種情況記錄Can't create table不能創建表
2019-11-22 14:42MYSQL教程網 Mysql
當你試圖在mysql中創建一個外鍵的時候,這個出錯會經常發生,這是非常令人沮喪的。
延伸 · 閱讀
- 2022-03-11MySQL的索引你了解嗎
- 2022-03-10面試中老生常談的MySQL問答集錦夯實基礎
- 2022-03-10淺談如何保證Mysql主從一致
- 2022-03-10Ubuntu18.04(linux)安裝MySQL的方法步驟
- 2022-03-09MySQL讓人又愛又恨的多表查詢
- 2022-03-09MySQL Server 層和存儲引擎層是怎么交互數據的?
- Mysql
MySQL之Field‘***’doesn’t have a default value錯誤解決辦法
這篇文章主要介紹了MySQL之Field‘***’doesn’t have a default value錯誤解決辦法,需要的朋友可以參考下 ...
- Mysql
MySQL server has gone away錯誤提示解決方法
今天遇到類似的情景,MySQL只是冷冷的說:MySQL server has gone away。 ...
- Mysql
MySQL全文索引、聯合索引、like查詢、json查詢速度哪個快
這篇文章主要介紹了MySQL全文索引、聯合索引、like查詢、json查詢速度大比拼,通過實例代碼截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值...
- Mysql
解決重置Mysql root用戶賬號密碼問題
這篇文章主要介紹了解決重置Mysql root用戶賬號密碼問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下...
- Mysql
MySQL鎖的知識點總結
在本篇文章里小編給大家整理了關于MySQL鎖的知識點總結以及實例內容,需要的朋友們學習下。...
- Mysql
MySQL 查詢速度慢與性能差的原因與解決方法
隨著網站數據量與訪問量的增加,MySQL 查詢速度慢與性能差的問題就日漸明顯,這里為大家分享一下解決方法,需要的朋友可以參考下...
- Mysql
Centos7下使用yum安裝mysql數據庫的詳細教程(增強版)
這篇文章主要介紹了Centos7下使用yum安裝mysql數據庫的詳細教程(增強版),非常不錯,具有參考借鑒價值,需要的朋友可以參考下 ...
- Mysql
幾種MySQL中的聯接查詢操作方法總結
這篇文章主要介紹了幾種MySQL中的聯接查詢操作方法總結,文中包括一些代碼舉例講解,需要的朋友可以參考下 ...