sql >> データベース >  >> RDS >> Mysql

LinuxサーバーでMySQLテーブル名を大文字と小文字を区別しないように変更するにはどうすればよいですか?

    MySQLの大文字と小文字の区別は、デフォルトでファイルシステムによって処理されます。そのため、この違いが見つかりました:

    9.2.2。識別子の大文字と小文字の区別

    MySQLでは、データベースはデータディレクトリ内のディレクトリに対応します。データベース内の各テーブルは、データベースディレクトリ内の少なくとも1つのファイルに対応します(ストレージエンジンによってはさらに多くのファイルに対応する場合もあります)。したがって、基盤となるオペレーティングシステムの大文字と小文字の区別は、データベース名とテーブル名の大文字と小文字の区別に影響します。つまり、データベースとテーブルの名前では、Windowsでは大文字と小文字が区別されず、ほとんどの種類のUnixでは大文字と小文字が区別されます。注目すべき例外の1つはMacOSXです。これは、Unixベースですが、大文字と小文字を区別しないデフォルトのファイルシステムタイプ(HFS +)を使用します。ただし、Mac OS XはUFSボリュームもサポートしており、Unixと同様に大文字と小文字が区別されます。セクション1.8.4「標準SQLへのMySQL拡張」を参照してください。

    幸いなことに、次の文が役に立ちます:

    lower_case_table_names このセクションで後述するように、システム変数はサーバーが識別子の大文字と小文字を区別する方法にも影響します。

    lower_case_table_names 宣伝文:

    0に設定すると、テーブル名は指定どおりに格納され、比較では大文字と小文字が区別されます。 1に設定すると、テーブル名は小文字でディスクに保存され、比較では大文字と小文字が区別されません。 2に設定すると、テーブル名は指定どおりに格納されますが、小文字で比較されます。このオプションは、データベース名とテーブルエイリアスにも適用されます。詳細については、9.2.2項「識別子の大文字と小文字の区別」を参照してください。

    大文字と小文字を区別しないファイル名を持つシステム(WindowsやMac OS Xなど)でMySQLを実行している場合は、この変数を0に設定しないでください。このようなシステムでこの変数を0に設定し、異なる文字ケースを使用してMyISAMテーブル名にアクセスすると、インデックスが破損する可能性があります。 Windowsの場合のデフォルト値は1です。MacOSXの場合、デフォルト値は2です。

    したがって、lower_case_table_namesを設定する必要があるようです。 1へ MySQL構成ファイル内。



    1. スプリングデータjpaを使用してjsonb列をクエリするにはどうすればよいですか?

    2. SQL Serverの削除ステートメント:テーブルから1つまたは複数の行を削除する方法

    3. SQLDeveloperのCSV…

    4. MariaDBでのRTRIM_ORACLE()のしくみ