MySQLでリストアをしていた際にERROR 2006 (HY000) at line 566: MySQL server has gone away
とエラーが出た。
結果的にmax_allowed_packet
を1MBから4MBへ増やしたことで解決しました。
そのメモ。
環境
- CentOS 6.6
- MySQL 5.1
MySQL server has gone away
調べるとこちらの記事に行き当たりました。 このエラーがでる原因を3つ示しています。
- サーバータイムアウト
- 接続をcloseしている
- クエリが大きすぎる or クエリの最大サイズの設定が小さい
この中からクエリサイズが設定よりも大きいためと考え、クエリの最大サイズの設定を変更する。
max_allowed_packet
クエリの最大サイズはmax_allowed_packet
の設定です。
まずは現在の設定を確認します。
mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
単位はバイトで、設定は1MBでした。
my.conf
を変更して4MBにします。
/etc/my.conf
max_allowed_packet = 4194304
(MySQLのバージョンが古いためか、max_allowed_packet = 4MB
とすると変更できなかった)
サーバを再起動して設定を反映後もう一度確認します。
mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec)
OK!!
補足など
サーバを再起動
CentOS6です
$ sudo service mysql restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
my.confの場所の確認
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
ERROR 2006 (HY000)について
エラー: 2006 (CR_SERVER_GONE_ERROR) メッセージ: MySQL Server が存在しなくなりました
5 文字の SQLSTATE 値 ('42S02')。この値は、ANSI SQL および ODBC から採用されており、より標準化されています。すべての MySQL エラー番号に、対応する SQLSTATE 値があるわけではありません。それらの場合は、'HY000' (一般エラー) が使用されます。
うん、そのままですね。参考になる記事が見つかって良かったです。
参考
- MySQLのエラーと対策まとめ - Qiita
MySQL server has gone away
が出る原因を3パターン示している- ※参照されているMySQL 4.1 リファレンスマニュアルがリンク切れでした。
- mysql max_allowed_packetを変更する - Qiita
MySQL server has gone awayがmax_allowed_packetを変更して解決した
MySQLschedule2020-03-11
CentOSにインストールしたMySQLを削除する
MySQLschedule2019-09-19