lower-case-table-names で設定する
MySQLで大文字小文字区別させない設定は、lower-case-table-names で設定することができる。
設定値は、
- 0
- 1
- 2
のいずれか。
大文字小文字が影響するのはDB、Table、Triggerの3つ
データベース名、テーブル名、およびトリガー名で大文字と小文字が区別されるかどうか
DB名、Table名、Trigger名の3つだけが大文字小文字区別される可能性がある。
カラム名、インデックス名、ストアドルーチン名、およびイベント名は、どのプラットフォームでも大文字と小文字が区別されません。カラムのエイリアスも同様です。
他は大文字 小文字区別しない。
OSによってデフォルトの扱いが変わる
デフォルトだと、大文字・小文字は、以下のようになっている。
OS | 大文字小文字を区別 | lower-case-table-names デフォ値 |
Unix(Linux) | する | 0 |
Windows | しない | 1 |
OS X | しない | 2 |
Linux環境で大文字小文字を区別させない設定
本番環境のOSはLinuxということがほとんどだと思う。
Linuxで、大文字小文字を区別させないためには、
lower_case_table_names=1 に設定する
lower_case_table_names=1
を全システムで使用してください。
my.cnfで設定するには
[mysqld]
の欄に追記する。
[mysqld]
# 大文字小文字区別しない
lower_case_table_names=1
lower_case_table_names 設定は、サーバー初期構築後に変更できない
lower_case_table_names
は、サーバーの初期化時にのみ構成できます。 サーバーの初期化後のlower_case_table_names
設定の変更は禁止されています。
my.cnfの設定変更して、MySQL再起動、ぐらいじゃ駄目だと。
どっかの記事で、/var/lib/mysql を消して作り直した みたいなのを見た気がする。
自分は最初(MySQLインストール)から作り直した。(Docker環境だったので手軽だったのもあり)
現在の設定確認
mysql> show variables where variable_name='lower_case_table_names';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set (0.02 sec)
mysql>
上記の場合は、Valueが”1″になっとるので、
すべてのテーブルが小文字で作成されており、
大文字小文字を区別しない状態。
コメント