從mysql資料庫中導出正常資料庫的腳本語句,而後使用腳本語句創建資料庫的過程中,執行語句提示Can't Create Table 'XXX' erro150的錯誤,語句執行中斷,創建table失敗,仔細分析相關語句發現導致此錯誤的原因為創建的外鍵和關聯的表的主鍵類型不匹配。 仔細查看被執行的語句, ...
從mysql資料庫中導出正常資料庫的腳本語句,而後使用腳本語句創建資料庫的過程中,執行語句提示Can't Create Table 'XXX' erro150的錯誤,語句執行中斷,創建table失敗,仔細分析相關語句發現導致此錯誤的原因為創建的外鍵和關聯的表的主鍵類型不匹配。
仔細查看被執行的語句,發現無法執行的table語句中含有CONSTRAINT關鍵字和FOREIGN KEY 外鍵關鍵字,因此判斷該table的創建必須在外鍵表創建完成之後才可執行,找不到引用外鍵的表導致語句執行失敗,遂先找到外鍵表table先創建,並寫入數據,而後再執行上述錯誤語句,最後執行成功。
解決完此問題後,在網上查閱了相關資料,總結後有下列幾個情況會出現錯誤Can't Create Table 'XXX' erro150。
(1)兩個表格的外鍵關聯欄位的類型不一致不匹配。例如:A表和B表關聯欄位為teacherid,但A表中的teacherid為varchar類型,B表中的teacherid欄位為int類型,此情況是無法進行外鍵關聯的。
(2)兩個表的外鍵的類型一致,但字元編碼不一樣,如A表的關聯欄位的字元編碼為utf8_unicode_ci,B表的關聯欄位的字元編碼為utf8_general_ci。
(3)找不到外鍵引用的列。如找不到外鍵對應的數據表table,或者外鍵表中不存在該列名。
備註:原文轉載自Mysql創建表時報錯error150_IT技術小趣屋。