Windows版のMySQLをXAMPPでインストールしたら、大文字と小文字を区別してくれませんでした。
これは不便です。
どうしたらよいのでしょうか?
MySQLのlower_case_table_names
結論として
Linuxでは、lower_case_table_names=0
Windowsでは、lower_case_table_names=2
を使うとよいようです。
以下に説明がありますが、結構長くて難しい。
・https://dev.mysql.com/doc/refman/5.6/ja/identifier-case-sensitivity.html
値 | 説明 |
---|---|
0 | テーブル名とデータベース名は、CREATE TABLE または CREATE DATABASE ステートメントで 指定された大文字または小文字を使用してディスク上に格納されます。 名前比較では大文字と小文字が区別されます。 大文字小文字を区別しないファイル名を持つシステム (Windows や OS X など) で MySQL を実行する場合、この変数を 0 に設定しないでください。 大文字と小文字を区別しないファイルシステムで --lower-case-table-names=0 を使用して強制的にこの変数を 0 に設定し、 大文字と小文字を変えて MyISAM テーブル名にアクセスした場合、インデックスが破損することがあります。 |
1 | テーブル名はディスク上に小文字で格納され、名前比較では大文字と小文字は区別されません。 MySQL では、保存およびルックアップ時にすべてのテーブル名が小文字に変換されます。 この動作はデータベース名やテーブルエイリアスにも適用されます。 |
2 | テーブル名とデータベース名は、CREATE TABLE または CREATE DATABASE ステートメントで指定された大文字または小文字を使用して ディスク上に格納されますが、MySQL ではルックアップ時に小文字に変換されます。 名前比較では大文字と小文字が区別されません。これは大文字と小文字が区別されないファイルシステムでのみ機能します。 InnoDB テーブル名は lower_case_table_names=1 のように、小文字で格納されます。 |
あれれ?
大文字小文字を区別しないファイル名を持つシステム (Windows や OS X など) で MySQL を実行する場合、この変数を 0 に設定しないでください。
と書いてある???
と思いきや、以下のように補足されていました。
Unix 上では lower_case_table_names=0 を、Windows 上では lower_case_table_names=2 を使用してください。これでデータベース名とテーブル名の大文字と小文字の区別が保持されます。この欠点は、ユーザーのステートメントが、Windows 上で正しい大文字または小文字でデータベース名およびテーブル名を常に参照していることを確認する必要があることです。大文字と小文字が区別される Unix にステートメントを転送する場合、大文字と小文字が正しくなければこのステートメントは機能しません。
XAMPPのMySQLでmy.ini に設定する
XAMPPのMySQLでlower_case_table_namesを設定する方法は次の通りです。
XAMPPのコントロールパネルを開きます。
Configを押して、my.ini を開きます。
以下のように、[mysqld] に lower_case_table_names=2 を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# The MySQL server [mysqld] character_set_server=utf8 lower_case_table_names=2 port= 3306 socket = "C:/xampp/mysql/mysql.sock" basedir = "C:/xampp/mysql" tmpdir = "C:/xampp/tmp" datadir = "C:/xampp/mysql/data" pid_file = "mysql.pid" # enable-named-pipe key_buffer = 16M max_allowed_packet = 1M sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M log_error = "mysql_error.log" |
コメント