1. 程式人生 > 其它 >Cannot add foreign key constraint 錯誤解決辦法

Cannot add foreign key constraint 錯誤解決辦法

【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' 解決思路:
  1. 使用者真的沒許可權
  2. 兩張表裡要設主鍵和外來鍵的欄位的資料型別或者資料長度不一樣 (例如這個是char另外一個是varchar,或者都是vatchar,但是設定的長度不同,如一個長度100,一個10)
  3. 某個表裡已經有記錄了
  4. 兩個表的引擎不一樣,查看錶的引擎語句:
  5. show table status from 資料庫名 where name='表名';
  6. 要設定外來鍵的欄位不能為主鍵
  7. 改建所參考的欄位必須為主鍵
  8. 兩個欄位必須具有相同的資料型別和約束
  9. 字符集不一樣(一個是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