
次のコマンドを使用して、mysqldump を使用して別のサーバーで作成された 160 MB のファイルからデータをインポートしています。インポート先の環境では、max_allowed_packet が「16M」に設定された最新の WAMP サーバーを実行しています。
C:\wamp\bin\mysql\mysql5.1.36\bin>mysql --max_allowed_packet=15M -u root -pXXX drupal < C:\prod.sql
ERROR 2006 (HY000) at line 644: MySQL server has gone away
これは、約 39 秒経過し、85.5 MB がインポートされた後に一貫して発生するようです。
my.ini で max_allowed_packet を増やすという提案をたくさん読んだので、デフォルトの 1M ではなく 16M に増やしました。しかし、何をしてもエラーは解消されません。何かアイデアはありますか?
my.ini で解決されました:
[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer = 384M
max_allowed_packet = 100M
table_cache = 4096
sort_buffer_size = 2M
net_buffer_length = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 64M
myisam_sort_buffer_size = 64M
basedir=c:/wamp/bin/mysql/mysql5.1.36
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.36/data
thread_cache_size = 8
query_cache_size = 32M
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 10M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 100
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 100M
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
答え1
SQL のデータ構造は何ですか?
1 つの列が BLOB である可能性があり、おそらく 16 MB を超える画像または PDF です。max_allowed_packet を 160 MB に設定して (1 つのパケットがファイル全体のサイズを超えることはできないため)、再度テストしてください。後でいつでも元に戻すことができます。
データをインポートし、SHOW TABLE STATUS コマンドを使用してデータ サイズを取得すると、より正確な値が得られ、どのくらいの大きさになるかがわかります。
ただし、このエラーは非常に一般的であり、エラーが表示される理由のリストがあります。MySQLのウェブサイト
問題を見つけるには、それぞれを調べる必要がありますが、私の経験では、常にパケットが大きすぎることが原因です。まさにこの理由から、私はプロダクション ボックスの 1 つで max_packet_size を 180 MB に設定しています。
答え2
my.cnfでwait_timeoutを100程度に上げてからサーバーを再起動してみてください。
wait_timeout = 100
答え3
Richard の回答は一般的な解決策ですが、.err
ログを確認してください。MySQL がメモリ不足になり、再起動している可能性があります。私も最近、ハードウェアの故障で同じことが起きました。