新しいdbサーバーに移動しようとしているデータベースからのMYSQLダンプがあります。 SQLダンプをインポートしようとすると、次のエラーが表示されます。
MySQL Error 2006 (HY000) at line 406: MySQL server has gone away
私は問題をグーグルで調べ、ほとんどの人がwait_timeoutの値を変更することで問題を修正しました。ただし、現在の値は28800(8時間)に設定されており、インポートを実行するとエラーが8秒未満で表示されます。
また、max_allowed_packetの値を1073741824に設定してみましたが、それでも問題は解決しませんでした。
Mysqlダンプを見ると、ダンプにはかなりの数のblob列がありますが、全体のファイルサイズはわずか6 MBです。
他に何が問題になるのかについて誰かが何か考えを持っていますか?
パケットサイズを増やすと問題が解決する理由を説明するため、将来の検索者のためにこの回答を追加します。
クライアントがサーバーのmax_allowed_packet設定よりも長いSQLステートメントを送信した場合、サーバーはクライアントを切断するだけです。同じクライアントインスタンスからの次のクエリは、「MySQLサーバーがなくなった」ことを検出します。
...しかし、それが問題である場合は、「パケットを大きくする」エラー[エラー:2020(CR_NET_PACKET_TOO_LARGE)]が返されるようにすることをお勧めします。
peter_laursenのブログ投稿からの抜粋と感謝
OSX 10.7(Lion)では、次の内容のファイル/etc/my.cnfを作成しました。
[mysqld]
max_allowed_packet = 12000000
そして、mysqlサーバーを停止しました。
/usr/local/bin/mysql.server stop
自動的に再起動すると、挿入を実行できました。
Max_allowed_packetを12 MB(12000000)に増やすと、130 MBのファイルをインポートしようとしたときに問題が解決しました。
Iniファイルを変更するか、MySQL WorkbenchのOptions File/Networkingで変更します(MySQLの再起動が必要です)。
それでもエラーが発生する場合は、さらに増やしてみてください(100 MB)。完了したら、値を減らすことを忘れないでください。
1)MySql構成ファイルの変更:#/etc/mysql/my.cnf
#section
#
[mysqld]
#
key_buffer = 32M
max_allowed_packet = 32M
thread_stack = 512K
thread_cache_size = 64
#
2)MySqlデーモンの再起動
/etc/init.d/mysql restart
あなたの問題を解決する必要があります。