かみぽわーる

kamipo's blog

MySQL の unknown option エラーはオプションに loose- プレフィックスをつけると回避できる

もうMySQL 5.5 GAが出てから1年以上が経ち、つい先日とうとうMySQL 5.6 GAも出た昨今、これから先パーソナルユースでこれより以前のMySQLなど使うことはないだろうと~/.my.cnfを書いていたのだけど、昨日ちょっとしたアレでMySQL 5.1を入れたらMySQLが進化しすぎててオプションコメントアウトしまくらないと動かないわーとかいってたらloose-つけるといいですよって教えてもらった。

これは知らなかった!

MySQL 5.1とか使うことはまぁないだろうけど、いろんなバージョン試してるときに明らかに新しめのオプションにloose-つけとくと便利そう。とりあえず今回は以下のオプションにloose-つけたらいけた。

[mysqld]
loose_innodb_strict_mode
loose_innodb_buffer_pool_instances = 1 
loose_innodb_read_io_threads = 8 
loose_innodb_write_io_threads = 8 
loose_innodb_file_format = Barracuda
loose_innodb_print_all_deadlocks
loose_innodb_large_prefix

あとcharacter_set_server = utf8mb4でこけるのは、オプションはあるけど値が未対応なやつなので、my.cnfのグループをバージョン指定して読み込めるやつを使って回避した。

[mysqld]
character_set_server = utf8mb4

[mysqld-5.1]
character_set_server = utf8

my.cnfのオプション指定は後勝ちなんで、MySQL 5.1のときはutf8、それ以外のときはutf8mb4という感じに指定できます。

あと、最新のMySQLをソースからとりあえず深く考えずにビルドしてみたい向きにはmysql-buildを使うといいらしいです。

参考