Homebrew で MySQL を 5.6 から 5.7 にあげたときのエラーの解決方法

個別具体的なお話にはなりますが、この問題解決の考え方は一般化できるところなのでここに書いておきます。

Homebrew で導入している MySQL のバージョンを 5.6.x から 5.7.x にあげたときに MySQL が立ち上がらなくなってしまいました。

$ brew upgrade mysql

$ mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/[マシン名].local.pid).

なんだろうなと思い Stack Overflow を検索してみましたがこれといった解決法が見つかりません。 「自分の場合はこれで解決したよ!」という事例が山ほどありますが、ひとつひとつ試していくのは億劫なのでちゃんとエラーログを読むことにします。 Hombrew の MySQL のエラーログは /usr/local/var/mysql/ あたりにあります。

$ less /usr/local/var/mysql/[マシン名].local.err

直近のエラーを検索すると次のような記述が見つかりました。

2016-MM-DDT12:56:00.865392Z 0 [ERROR] unknown variable 'innodb_additional_mem_pool_size=16M'
2016-MM-DDT12:56:00.865413Z 0 [ERROR] Aborting

innodb_additional_mem_pool_size なんて変数知らないからアボートしたよ、と言われています。

なんだかよくわかりませんが、公式のドキュメントを読むと確かにこの変数は MySQL 5.7 で廃止されて使えなくなってしまったようです。

問題の原因がわかったので、設定ファイルの中から innodb_additional_mem_pool_size に関係する部分を探して削除します。 私の場合は設定ファイルとして /etc/my.cnf を使っているのでこのファイルを開きます。

$ sudo vi /etc/my.cnf

該当行を削除して再度最初のコマンドを実行します。

$ mysql.server start
Starting MySQL
.. SUCCESS!

無事立ち上がりました。

以上です。

Homebrew の MySQL のアップデート作業は、既存の DB や設定ファイルがそのまま引き継がれる点はずぼらな私にはとてもうれしいのですが、設定の細かな部分までは追えていないライトユーザな私には少し気が重たくなる作業です。

今回の学び

MySQL で次のエラーメッセージを見たらまずエラーログを読むべし。

... ERROR! The server quit without updating PID file

MySQL が立ち上がらない原因は無数にあるので、オンラインで闇雲に検索するよりもエラーログをきちんと読んだ方が早いと思います。