ホームページ  >  記事  >  データベース  >  mysql运维- lower_case_table_names

mysql运维- lower_case_table_names

韦小宝
韦小宝オリジナル
2018-02-08 09:54:491402ブラウズ

1 はじめに
MySQL では、データベースはデータ ディレクトリ内のディレクトリに相当します。データベース内の各テーブルは、データベース ディレクトリ内の少なくとも 1 つのファイルに対応します (ストレージ エンジンによっては複数の場合があります)。したがって、使用するオペレーティング システムの大文字と小文字の区別によって、データベース名とテーブル名の大文字と小文字の区別が決まります。
データベース名とテーブル名は、ほとんどの Unix では大文字と小文字が区別されますが、Windows では大文字と小文字が区別されません。注目すべき例外の 1 つは Mac OS X です。Mac OS X は Unix をベースとしていますが、大文字と小文字を区別しないデフォルトのファイル システム タイプ (HFS+) を使用します。ただし、Mac OS X は、Unix と同様に大文字と小文字が区別される UFS ボリュームもサポートします。
変数 lower_case_file_system は、データ ディレクトリが配置されているファイル システムがファイル名の大文字と小文字を区別するかどうかを示します。 ON はファイル名の大文字と小文字が区別されないことを示し、OFF はファイル名が大文字と小文字を区別することを示します。

たとえば、Windows で表示してください:

mysql运维- lower_case_table_names

これは、Windows システムでは大文字と小文字が区別されず、mysql もデフォルトで大文字と小文字が区別されないように設定されていることを意味します。

2 大文字と小文字の区別ルール
Linux では:
データベース名とテーブル名は厳密に大文字と小文字が区別されます。
テーブルのエイリアスは厳密に大文字と小文字が区別されます。
列名と列のエイリアスは、すべての場合で厳密に大文字と小文字が区別されます。以下は大文字と小文字を区別しません。
変数名も厳密に大文字と小文字が区別されます。
Windows の場合:
大文字と小文字が区別されません。
Mac OS (非 UFS ボリューム) の場合:
大文字と小文字が区別されます。

3 パラメーターdescription ( lower_case_table_names ) UNIX での lower_case_table_names のデフォルト値は 0 です。Windows でのデフォルト値は 1 です。Mac OS X でのデフォルト値は 2 です。

0 1テーブル名はハードディスクに小文字で保存され、名前の比較では大文字と小文字が区別されません。 MySQL は、ストレージ テーブルとルックアップ テーブルのすべてのテーブル名を小文字に変換します。この動作は、データベース名とテーブルの別名にも適用されます。この値は Windows のデフォルトです。 2テーブル名とデータベース名は、CREATE TABLE または CREATE DATABASE ステートメントで指定された大文字と小文字を使用してハードディスクに保存されますが、MySQL はルックアップ テーブルでそれらを小文字に変換します。名前の比較では大文字と小文字は区別されません。つまり、大文字と小文字に従って保存され、小文字に従って比較されます。注: InnoDB テーブル名は小文字で保存されるため、大文字と小文字を区別しないファイル システムにのみ適用されます。 作成した元のライブラリやテーブルが大文字と小文字を区別するもので、大文字と小文字を区別しないものに変換したい場合は、主に次の作業が必要です。次の 3 つのステップ: 1. mysqldump を通じてデータベース データをエクスポートします。 2. my.cnf で lower_case_tables_name = 1 を変更し、mysql データベースを再起動します。

保存CREATE TABLE または CREATE DATABASE ステートメントで指定された大文字と小文字を使用して、ハード ディスク上のテーブル名とデータベース名を指定します。名前の比較では大文字と小文字が区別されます。 Windows や Mac OS などの大文字と小文字を区別しないオペレーティング システムでは、このパラメータを 0 に設定できません。大文字と小文字で MyISAM テーブル名にアクセスすると、インデックスが破損する可能性があります。

4 大文字と小文字を区別するものから大文字と小文字を区別しないものに変換する方法
3. エクスポートしたデータを mysql データベースにインポートします。

5 注意事項


大文字化による問題を回避するために、データベース、テーブル、列を定義するときは、すべて小文字と下線を使用し、大文字は使用しないことをお勧めします。どのシステムでも lower_case_tables_name=1 を使用できます。このオプションを使用する場合の欠点は、SHOW TABLES または SHOW DATABASES を使用するときに、名前が元々大文字であったか小文字であったかを確認できないことです。
Unix では、 lower_case_tables_name を 1 に設定する前に lower_case_tables_name = 0 の場合、mysqld を再起動する前に古いデータベース名とテーブル名を小文字に変換する必要があることに注意してください。

関連する推奨事項:

Mysql の my.ini に lower_case_table_names = 0 を追加して、テーブルの _MySQL

を作成します。

以上がmysql运维- lower_case_table_namesの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。