MySQLの大文字と小文字の機密設定

902 ワード

MySQLでは、データベースとテーブルのペアがディレクトリの下にあるディレクトリとファイルにあります.したがって、オペレーティングシステムの機密性は、データベースとテーブルの名前の大文字と小文字の機密性を決定します.これは、データベースとテーブル名がWindowsでは大文字と小文字が敏感ではなく、ほとんどのタイプのUnixシステムでは大文字と小文字が敏感であることを意味します.
奇妙なことに、カラム名とカラムの別名はすべての場合、大文字と小文字を無視し、テーブルの別名は大文字と小文字を区別します.
この問題を回避するには、データベースのネーミングルールを定義するときに、大文字ではなく小文字と下線の組み合わせをすべて使用したほうがいいです.
または、-O lower_case_table_names=1パラメータでmysqldを強制的に起動することもできます(--defaults-file=...my.cnfパラメータを使用して指定したプロファイルを読み込んでmysqldを起動する場合は、プロファイルの[mysqld]セグメントの下にlower_case_table_names=1を1行追加する必要があります).これにより、MySQLは作成と検索時にすべてのテーブル名を小文字に自動的に変換します(このオプションはデフォルトでWindowsで1、Unixで0です.MySQL 4.0.2からデータベース名にも適用されます).
このオプションを変更する場合は、mysqldを起動する前に、古いテーブル名を小文字に変換する必要があります.
すなわち、データベースにテーブルを作成するときに大文字と小文字のステータスを維持する場合は、このパラメータを0:lower_case_table_names=1 .そうでないと、同じsqldumpスクリプトが異なるオペレーティングシステムで最終的にインポートされた結果が異なります(Windowsではすべての大文字が小文字になります).