MySQL 大文字小文字 区別しない 設定 | クズリーマンのカス備忘録

MySQL 大文字小文字 区別しない 設定

animal_dolphin-iruka-mysql-logo MySQL
スポンサーリンク

 

lower-case-table-names で設定する

MySQLで大文字小文字区別させない設定は、lower-case-table-names で設定することができる。

設定値は、

  • 0
  • 1
  • 2

のいずれか。

 

大文字小文字が影響するのはDB、Table、Triggerの3つ

 

データベース名、テーブル名、およびトリガー名で大文字と小文字が区別されるかどうか

MySQL公式

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 設定の変更は禁止されています。

MySQL8.0公式マニュアル

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″になっとるので、

すべてのテーブルが小文字で作成されており、

大文字小文字を区別しない状態。

 

 

コメント

タイトルとURLをコピーしました