web-dev-qa-db-ja.com

LinuxでのMySQLの大文字と小文字を区別するテーブル名

MySQLデータベースをWindowsからLinuxに移動するLinuxでは、テーブルの名前で大文字と小文字が区別されるという問題があります。 Javaアプリケーションがテーブルを見つけられないため、これは問題です。

行を追加する_/etc/mysql/my.cnf_ファイルを変更しました:

_lower_case_table_names=1_

しかし、それは何も変えませんでした。

私のサーバーのバージョンは:5.1.61-0ubuntu0.11.10.1 (Ubuntu)

テーブル名の大文字と小文字を無視するようにMySQLを構成するにはどうすればよいですか?

Lower_case_table_names設定を変更するだけでは十分ではありません。データベースをインポートする前に実行する必要があります。

MySQL 5.1ドキュメント は、WindowsとLinux/UNIX間を移動するための手順を示しています。これにより、大文字と小文字を区別するための目的のルールが確実に守られます。見て、正しい順序でこれらの手順を実行したことを確認します。

1つまたは複数のデータベース全体を変換するには、lower_case_table_namesを設定する前にそれらをダンプし、データベースを削除して、lower_case_table_namesを設定した後で再ロードします。

1-mysqldumpを使用して各データベースをダンプします。

mysqldump-データベースdb1> db1.sql

mysqldump-データベースdb2> db2.sql

...再作成する必要があるデータベースごとにこれを行います。

2-DROP DATABASEを使用して各データベースを削除します。

3-サーバーを停止し、lower_case_table_names の中に [mysqld]のセクション\etc\mysql\my.cnfファイルを作成し、サーバーを再起動します。

4-各データベースのダンプファイルをリロードします。 lower_case_table_namesが設定されているため、各データベースとテーブル名は、再作成時に小文字に変換されます。

mysql <db1.sql

mysql <db2.sql

6
Aaron