mysql匯入大型的sql檔案遇到問題及解決辦法
阿新 • • 發佈:2019-01-03
我們在用mysql資料庫時,有時會把這個資料庫裡的資料弄到另一個數據庫,這時候我們會用到把資料導成sql檔案,
然後再執行該sql新增資料到另一個數據庫中,下面來寫一下,本人在操作時遇到的問題,及解決辦法: 1.利用連線資料庫的圖形介面匯入sql:
這樣匯入的方式1是速度慢,2是會遇到各種的報錯,比較麻煩:
(一)我們匯入sql時會因為匯出sql檔案執行新增表的順序不一樣會報Cannot delete or update a parent row: a foreign key constraint fails (...); 我們可以使用 SET FOREIGN_KEY_CHECKS=0; 來禁用外來鍵約束.插入資料後再用 SET FOREIGN_KEY_CHECKS=1; 來啟動外來鍵約束. 檢視當前FOREIGN_KEY_CHECKS的值可用如下命令 SELECT @@FOREIGN_KEY_CHECKS;
( 二 )在使用批量插入語句時插入大量的資料時,報錯1153 - Got a packet bigger than 'max_allowed_packet' bytes
我們可以使用 set global max_allowed_packet = 2*1024*1024*10 設定最大值為20M
或則在my.ini加入:[mysqld]max_allowed_packet=16M 重新啟動mysql
然後再執行插入語句就不會報錯了。
2.利用命令匯入sql檔案
我們有時也會遇到配置的問題報錯:
一般在my.ini中配置一下以下引數
max_allowed_packet=100M;這個值當然要大於你匯入檔案的大小。
wait_timeout=2880000
interactive_timeout = 2880000;mysql的連線時間,如果沒有該配置可以加上
windows環境下的命令:
圖中1進入mysql的安裝目錄bin目錄下;
圖中2:mysql -u root -p test 命令意思是root賬戶進入test資料庫下點選回車資料密碼
會出現mysql>表示連結進入test資料庫。
匯入資料檔案:
如上圖1輸入命令:source e:\data\user_prize.sql意思是執行user_prize.sql檔案
如上圖2:warning都是0表示匯入成功。
希望上面的總結對大家有所幫助。