9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLの設定の区切り文字はアンダースコアとハイフンどちらを使うべきか

Posted at

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クライアントから参照するときはハイフンは使えない(アンダースコアのみ)。
というわけでアンダースコアに統一でよさそう。
(一般的な挙動ではアンダースコアの方がダブルクリックしたときに一気に選択されてくれて便利だしね)

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?