備忘録‎ > ‎

[mysql]テーブル名と大文字小文字

OSによってファイル名の大文字小文字の扱いがと異なる。
たとえばLinuxは、大文字と小文字を明確に区別する。abcとAbcは別のファイルとして扱われる。
一方Windowsは、大文字と小文字を区別してファイル名を保持するが、abcとAbcは同じファイルとして扱われる。
 
MySQLのデータベース名やテーブル名の認識は、初期状態でOSのファイル名の扱いに準拠する設定となっている。
システム変数 lower_case_table_names に 0~2 の値を設定する。
  • 0 .. 大文字小文字を区別する
  • 1 .. 大文字小文字を区別しない(テーブル名をすべて小文字にして格納)
  • 2 .. 大文字小文字を区別しない(テーブル名をそのまま格納)
Linuxは標準で0、windowsは1、が設定されている。そのためOSの異なるMySQL間で移行する場合は注意が必要である。
設定は、my.cnf (linux) / my.ini (windows) に下記のように記載する。

[mysqld]

lower_case_table_names = 1
 
変更後はサービスを再起動する。
 
Comments