Cannot add foreign key constraint 錯誤解決辦法
阿新 • • 發佈:2022-12-04
【1】報錯情況 Cannot add foreign key constraint
(1.1)情況1,建表時報錯
REFERENCES command denied to user 'AUDITDBA'@'x.x.x.x' for table 'audit_activiti.act_re_deployment' 解決思路:- 使用者真的沒許可權
- 兩張表裡要設主鍵和外來鍵的欄位的資料型別或者資料長度不一樣 (例如這個是char另外一個是varchar,或者都是vatchar,但是設定的長度不同,如一個長度100,一個10)
- 某個表裡已經有記錄了
- 兩個表的引擎不一樣,查看錶的引擎語句:
- show table status from 資料庫名 where name='表名';
- 要設定外來鍵的欄位不能為主鍵
- 改建所參考的欄位必須為主鍵
- 兩個欄位必須具有相同的資料型別和約束
- 字符集不一樣(一個是CHARSET=gbk,一個是CHARSET=utf8)
大部分遇到的情況就是4、5。
後面關聯的表的欄位必須被設定為主鍵,才能關聯成功。
本文案例實際配到的情況是類似於 4的,兩個表全是 MYISAM引擎,當然無法建立啦;
(1.2)情況2,匯入資料時報錯
該問題的發現是從測試環境向生產環境導資料時產生的,執行匯入就報
Cannot add foreign key constraint 外來鍵的錯,剛開始以為是資料的問題,但是反覆檢視並沒有發現有什麼問題,陷入了僵局。
修改外來鍵檢查變數:FOREIGN_KEY_CHECKS ,可以根據情況設定 global 和 session 級別;
【參考文件】
https://blog.csdn.net/just_for_that_moment/article/details/126417025
https://blog.csdn.net/qq_38708372/article/details/118674983