[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

サービスを再起動で設定内容が反映される。

LEAVE A COMMENT