1

おはようスタックオーバーフロー。

SQL ファイルを Windows マシンにインポートする際に問題が発生しています。sql ファイルは Linux マシンからのものです。Linux のテーブル名はキャメルケースで、Windows に移行するとすべて小文字になります。データベースにアクセスできるようにコードを調整したくないので、ウィンドウでキャメルケースのテーブル名を実現できる方法はありますか?

どうもありがとう。


Linux テーブル名から: -> FooBar

Windows の mysql ワークベンチにインポートする場合: -> foobar

クエリは次のようになります。

SELECT * FROM FooBar; // when the program is pointed to the database in windows, it will spit out that the table does not exist because the table name is "foobar"
4

1 に答える 1

2

Linux と Windows では、両方のオペレーティング システムがテーブル名を格納する方法に違いがあります (小文字のみを許可するかどうか)。lower_case_table_namesこれは、システム変数によって制御できます。Windows インストールでは、おそらくこの値が 1 に設定されており、Linux サーバーではこの値が 0 に設定されています。ユーザー マニュアルの「識別子の大文字と小文字の区別」の部分に従って、2 つのオプションがあります。

すべてのシステムで使用lower_case_table_names=1します。これの主な欠点は、SHOW TABLESまたはを使用するSHOW DATABASESと、名前が元の大文字小文字で表示されないことです。

また

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

いくつかのリンク:

于 2012-11-06T06:09:03.800 に答える