當進行 mysqldump 時出現 Out of memory (Needed xxxxx bytes) 的錯誤,該如何處理?
$ mysqldump -uroot -p -B mydatabase > db_ae.sql
Enter password:
mysqldump: Out of memory (Needed 1477684 bytes)
mysqldump: Got error: 2008: MySQL client run out of memory when retrieving data from server
Enter password:
mysqldump: Out of memory (Needed 1477684 bytes)
mysqldump: Got error: 2008: MySQL client run out of memory when retrieving data from server
解決
當一個MySQL客戶或mysqld server得到一個比max_allowed_packet 設定還長的封包,會出現 Packet too large 錯誤並終止連接。
解法一、可以修改 mysql 的設定檔
一、修改 /etc/my.cnf,加入這行
[mysqld]
max_allowed_packet = 64M
max_allowed_packet = 64M
二、重啟mysql
# /usr/local/etc/rc.d/mysql-server restart
三、再重新dump
解法二、若只是一個 mysql 客戶,沒有修改設定檔的權限怎麼處理?
你可以使用以下指令來設定更大的緩衝區,例如 8M:
# mysqldump --set-variable=max_allowed_packet=64M -uroot -p -B mydatabase > db_ae.sql