MySQLの設定を検索していたら、設定項目の区切り文字がアンダースコアのものとハイフンのものがあった。
そもそもデフォルトの設定ファイルの時点で混在している(innodb_buffer_pool_size
はアンダースコアだがlog-error
はハイフンだった)。なんだこれは。
マニュアルを見ると、
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.2.8 プログラム変数の設定へのオプションの使用
お好みで、変数名内の下線をダッシュとして指定できます。次のオプショングループは同等です。どちらもサーバーのキーバッファーを 512M バイトに設定します。
[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M
とあり、ハイフンでもアンダースコアでも同等のようだ。
ではなぜこんなことになっているのか。
mysqlのconfについて - MySQL | 【OKWAVE】によると、
「アンダースコアとハイフンはオプションファイル内では等価、ただし起動オプション指定ではハイフンを、mysqlクライアントからshowやsetでシステム変数を参照するときはアンダースコアでないと認識できない」とのこと。
このようにアンダースコアとハイフンを使い分けなければならなかった事情があり、そのためオプションファイル内でも混在可能になっていると思われる。
ただ5.6現在(上記のマニュアル)では、
shell> mysql --max_allowed_packet=16M
とコマンドラインオプション指定でもアンダースコアを使っており、アンダースコアでも使えるようになった(もしくは上の回答が間違っている)ようだ。
まとめると、設定ファイルではハイフンでもOKだが、mysqlクライアントから参照するときはハイフンは使えない(アンダースコアのみ)。
というわけでアンダースコアに統一でよさそう。
(一般的な挙動ではアンダースコアの方がダブルクリックしたときに一気に選択されてくれて便利だしね)