2

データベーステーブル名の最初の文字がどこでも大文字であるが、データベース内のテーブル名が小文字であるphpコードがあります。

データベースと同じケースでテーブル名を作成するためにすべてのコードファイルで変更する必要がないように、どのグローバル設定を使用する必要がありますか。

4

2 に答える 2

4

Linux では、MySQL メタデータはデフォルトで大文字と小文字が区別されます。つまり、小文字のテーブル my_table がある場合、

select * from my_table

しながら成功する

select * from MY_TABLE

ある種のテーブルが存在しないというメッセージで失敗します。

両方のステートメントを成功させたい場合は、/etc/my.cnf または MySQL 構成を保存している場所に次の行を入れる必要があります。システム変数を構成ファイルの [mysqld] セクションに必ず追加してください。

于 2012-10-15T12:24:20.957 に答える
1

mysql 識別子を確認する必要があります。

 lower_case_table_names

my.iniディレクトリにあるファイルを確認する必要がありますmysql。移行元と移行先のオペレーティング システムの詳細については、次を確認してください。

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

上記の URL からの抜粋:

1 つのプラットフォームのみで MySQL を使用している場合、通常、lower_case_table_names 変数をデフォルト値から変更する必要はありません。ただし、ファイル システムの大文字と小文字の区別が異なるプラットフォーム間でテーブルを転送する場合は、問題が発生する可能性があります。たとえば、Unix では、my_table と MY_TABLE という名前の 2 つの異なるテーブルを持つことができますが、Windows では、これら 2 つの名前は同一と見なされます。データベース名またはテーブル名の大文字と小文字が原因で発生するデータ転送の問題を回避するには、次の 2 つのオプションがあります。

Use lower_case_table_names=1 on all systems. The main disadvantage with this is that when you use SHOW TABLES or SHOW DATABASES, you do

元のレターケースで名前が表示されません。

Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows. This preserves the lettercase of database and table names.

これの欠点は、ステートメントが常にデータベース名とテーブル名を Windows 上で正しい文字で参照するようにしなければならないことです。大文字と小文字が重要な Unix にステートメントを転送する場合、大文字と小文字が正しくないと機能しません。

于 2012-10-15T12:19:01.300 に答える