資料庫表中外來鍵的建立
阿新 • • 發佈:2018-12-12
**
Can’t create table ‘.\xyrensheju#sql-710_6.frm’ (errno: 150)
**
我建立外來鍵時,得到了這個錯誤,我對錶和欄位檢查了又檢查,始終沒有發現問題出現在哪裡,百度了很多下,終於找到了解決的辦法,是我的主表的複合主鍵索引沒有單獨的建出來(就是兩個複合主鍵中的一個主鍵被別的表作為了外來鍵,那麼這個主鍵就必須得單獨建一個索引)。隨後,我又對建立外來鍵問題進行了一些簡單的研究,發現以下情況都會導致這個錯誤:
1、兩個欄位的資料型別不一致。例如,一個是int(10),而另一個卻是varchar(10)。你還要檢查,是不是一個選擇了無符號,而另一個沒有選擇。
2、主表字段不是主鍵,如果你不能把它設為主鍵,那麼可以為其建立一個索引。
3、主表字段是複合主鍵的一部分,並且這個欄位沒有它自己的索引。如果是這個問題,那麼就為這個欄位建立一個單獨的索引吧。
4、外來鍵指定了刪除時SET NULL,但是該欄位被設定為NOT NULL。Mysql無法解決這個問題,你只能修改其中一個地方的設定了。
5、外來鍵的名字重複了。一個數據庫中外來鍵名字必須是唯一的。試著新增一些隨機字元看看能不能建立成功。
6、ALTER語句寫錯了,從表表名寫錯了,從表字段寫錯了,主表表名寫錯了,主表字段寫錯了。。。
如果你也遇到了同樣的問題,經歷以上步驟後,希望你的問題能夠得到解決。如果你通過其他的辦法解決了這一問題,也歡迎並感謝您寫下評論。以供“後人”借鑑。