SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外來鍵約束。踩坑
然後再設定外來鍵約束: SET FOREIGN_KEY_CHECKS=1;
檢視當前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
今天在匯入Excel的時候遇到的坑:
以前都是用Excel匯入到本地的資料庫表,用本地的sql表匯入到伺服器的sql表。
今天突然就想直接把Excel匯入到伺服器的sql表,因為伺服器的sql表是有主外來鍵關聯的,我一般不會刪,都是用SET FOREIGN_KEY_CHECKS=0; 把外來鍵取消了,然後把本地的sql insert into table (cloumns1,cloumns2,cloumn3)select cloumns1,cloumns2,cloumn3 from table2 where id =‘20180622’;類似這樣匯入。然後啟動外來鍵關聯
好吧下面就是踩坑的開始,
我把Excel整理好把伺服器的外來鍵取消了,然後Excel匯入一直提示外來鍵關聯錯誤,我想不是關了外來鍵了嗎,還報錯,後來就去查資料,查了半天都是一樣的答案都是說取消外來鍵匯入sql開啟外來鍵。後來無意間看到,有個部落格上說,取消外來鍵用工具取消的是當前頁面的,後來我想了下,用Excel匯入資料來源都變了,應該都不算當前頁面了吧,我就考慮把伺服器上的sql表複製了一個,取消索引和外來鍵,匯入到這個沒有外來鍵和索引的表中,然後再取消外來鍵,用表複製把這個表的資料匯入到伺服器上的正式表中,果然成功了,看來深入理解mysql機制很重要。如果知道關閉外來鍵檢查是關閉當前頁的,也知道Excel匯入會和當前頁無關那麼這個問題直接就解決了。