奈良橿原 プログラミング・アカデミー 技術ノート

奈良橿原にある子どもプログラミング教室(大人は教えないとは言ってない)のブログです。レッスン内容やインストラクターの技術メモなど。

MySQLでMySQL server has gone awayエラー

MySQL 5.5.27, for Win32 (x86) です。XAMPPについてたやつです。

いくつか原因があるようですがー。自分のケースは結局解決方法がググっても見つからず、試行錯誤でなおしました。ログとして残しておきます。

表示されるエラーは以下のとおり。

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: *** NONE ***

ERROR 1184 (08S01): Aborted connection 3 to db: 'unconnected' user: 'hoge' host: 'localhost' (init_connect command failed)

どういう状況で発生したかというと、

>> mysql -uroot

mysql> create user 'hoge'@'localhost' identified by 'hoge';
Query OK, 0 rows affected (0.00sec)
mysql> select 1;
+---+
| 1 |
+---+
| 1 |
+---+
mysql> quit

>> mysql -uhoge -phoge

mysql> select 1;
# ここでエラー!

と、まったく同じ操作を、rootならできるのに新規作成したユーザでできないのでした。

原因は、my.iniの文字コードまわりの設定。もともと次のようにUTF8を使う際の設定がコメントアウトされていたので、これのコメントを全部はずして利用していたわけですが……。

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="/ProgramFiles/xampp-cake/mysql/share/charsets"

このうち、

init-connect=\'SET NAMES utf8\'

これがNGだったようです。この行だけ元通りコメントアウトしたらエラー消えました。コメントアウトしたことによる文字コードまわりへの影響も今のところ特にないです。