中途半端にMySQL 5.6が入ってRedmineが動かなくなった

Debian7にてsslの問題修正などをアップデートするためにパッケージの更新をしていたところRedmineが動かなくなっていた。

Unicornを実行すると以下のようなエラーが出力されている。

Incorrect MySQL client library version! This gem was compiled for 5.5.35 but the client library is 5.6.17

mysqlもアップデートされていたけどちゃんと見ていなかった。調べてみると面倒なことになっている。

$ sudo dpkg -l | grep mysql
ii  libdbd-mysql-perl                  4.021-1+b1                    amd64        Perl5 database interface to the MySQL database
ii  libmysqlclient-dev                 5.6.17-1~dotdeb.1             amd64        MySQL database development files
rc  libmysqlclient16                   5.1.66-0+squeeze1             amd64        MySQL database client library
ii  libmysqlclient18:amd64             5.6.17-1~dotdeb.1             amd64        MySQL database client library
ii  mysql-client                       5.5.35+dfsg-0+wheezy1         all          MySQL database client (metapackage depending on the latest version)
ii  mysql-client-5.5                   5.5.35+dfsg-0+wheezy1         amd64        MySQL database client binaries
ii  mysql-common                       5.6.17-1~dotdeb.1             all          MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                       5.5.35+dfsg-0+wheezy1         all          MySQL database server (metapackage depending on the latest version)
rc  mysql-server-5.1                   5.1.66-0+squeeze1             amd64        MySQL database server binaries and system database setup
ii  mysql-server-5.5                   5.5.35+dfsg-0+wheezy1         amd64        MySQL database server binaries and system database setup
ii  mysql-server-core-5.5              5.5.35+dfsg-0+wheezy1         amd64        MySQL database server binaries
ii  php5-mysql                         5.5.11-1~dotdeb.1             amd64        MySQL module for php5

mysqlは5.5が入っているが、開発用ライブラリはdotdebの5.6が入ってしまっている。dotdebはNginxやPHPの新しいバージョンをリリースしているリポジトリ。(紛らわしいがphp5-mysqlが5.5なのはPHPの現行最新版が5.5.11なため)

mysqlパッケージを検索するとdotdebがmysql-server-5.6を公開しているようなので5.6にあげてしまうことにした。

mysql-*-5.5mysql-*-5.6は別パッケージでmysql-*-5.6を入れようとしてもうまくアップグレードされないようなので、5.5を削除してから5.6を入れるみようとした。すると、そもそもmysql-clientmysql-serverのバージョンもdotdebの5.6になっていたので、mysql-*-5.5を削除しようとすると5.6が推薦されてインストールされた。apt-get upgrade mysql-client mysql-serverで良かったのかもしれない。

sudo apt-get remove mysql-client-5.5 mysql-server-5.5
...
The following packages will be REMOVED:
  mysql-client-5.5 mysql-server-5.5
The following NEW packages will be installed:
  mysql-client-5.6 mysql-server-5.6
The following packages will be upgraded:
  mysql-client mysql-server
2 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.

次にgemのmysql2パッケージをビルドしなおすためにパッケージを入れなおした。

$ rm -rf vendor/bundle
$ bundle install --path=vendor/bundle
...
Installing mysql2 (0.3.15) 

ちなみに今さくらのVPSの石狩リージョンの方に移行しようとしていてそちらはChef-Soloでセットアップしてみると綺麗に5.6になっていたのでやはりmysql-client mysql-serverをアップグレードすればよかったのかもしれない。

mysql.rb
# default[:mysql][:packages] = %w(mysql-client mysql-server mysql-common mytop libmysqlclient-dev)
node[:mysql][:packages].each do |pkg|
  package pkg do
    action :install
  end
end
$ sudo dpkg -l | grep mysql
ii  libdbd-mysql-perl                  4.021-1+b1                    amd64        Perl5 database interface to the MySQL database
ii  libmysqlclient-dev                 5.6.17-1~dotdeb.1             amd64        MySQL database development files
ii  libmysqlclient18:amd64             5.6.17-1~dotdeb.1             amd64        MySQL database client library
ii  mysql-client                       5.6.17-1~dotdeb.1             all          MySQL database client (metapackage depending on the latest version)
ii  mysql-client-5.6                   5.6.17-1~dotdeb.1             amd64        MySQL database client binaries
ii  mysql-client-core-5.6              5.6.17-1~dotdeb.1             amd64        MySQL database core client binaries
ii  mysql-common                       5.6.17-1~dotdeb.1             all          MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                       5.6.17-1~dotdeb.1             all          MySQL database server (metapackage depending on the latest version)
ii  mysql-server-5.6                   5.6.17-1~dotdeb.1             amd64        MySQL database server binaries and system database setup
ii  mysql-server-core-5.6              5.6.17-1~dotdeb.1             amd64        MySQL database server binaries
ii  php5-mysql                         5.5.11-1~dotdeb.1             amd64        MySQL module for php5

Redmineは無事動いた。