因為工作需要,需要導入一個200M左右的sql到user函式庫
#執行指令
mysql> use user Database changed mysql> source /tmp/user.sql
導入的過程中出現MySQL server has gone away錯誤,資料導入失敗。
錯誤訊息如下:
ERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 11Current database: userERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 12Current database: userERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 13Current database: user
開始以為是超時導致,因此調大了 connect_timeout 和 wait_timeout 的值。
重新執行後問題依舊。
解決方法:
查看資料,發現了max_allowed_packet 參數,
官方解釋是適當增大 max_allowed_packet 參數可以讓client端到server端傳遞大數據時,系統能夠分配更多的擴充記憶體來處理。
查看mysql max_allowed_packet的值
mysql> show global variables like 'max_allowed_packet'; +--------------------+---------+| Variable_name | Value | +--------------------+---------+| max_allowed_packet | 4194304 | +--------------------+---------+
可以看到是4M,然後調大為256M(1024*1024*256)
mysql> set global max_allowed_packet=268435456; Query OK, 0 rows affected (0.00 sec)mysql> show global variables like 'max_allowed_packet'; +--------------------+-----------+| Variable_name | Value | +--------------------+-----------+| max_allowed_packet | 268435456 | +--------------------+-----------+1 row in set (0.00 sec)
修改後執行導入,一切正常,解決問題。
注意:
使用set global指令修改 max_allowed_packet 的值,重啟mysql後會失效,還原為預設值。
如果想重新啟動後不還原,可以開啟 my.cnf 文件,加入 max_allowed_packet = 256M 即可。
這篇說明了mysql導入大批量資料出現MySQL server has gone away的解決方法,更多相關內容請關注php中文網。
相關推薦:
#以上是mysql匯入大批量資料出現MySQL server has gone away的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!