MySQL の大文字と小文字の区別に関する注意

MySQL の大文字と小文字の区別に関する注意

このため、Alibaba の規則では以下が求められています。

[必須] テーブル名とフィールド名には小文字または数字を使用する必要があります。数字で始まったり、2 つのアンダースコアの間に数字だけが含まれていたりすることはできません。データベースのフィールド名を変更するには多大なコストがかかり、事前リリースが不可能なため、フィールド名は慎重に検討する必要があります。

したがって、不要なトラブルを避けるため、データベース名、テーブル名、フィールド名には大文字は使用できません。

MySQLの大文字と小文字の区別はパラメータによって制御されます

MySQL の大文字と小文字の区別の設定に関連するパラメーターは、lower_case_file_system と lower_case_table_names の 2 つです。

MySQLの大文字と小文字を区別する現在の設定を表示するには、次の文を使用します。

'%lower_case%' のようなグローバル変数を表示します。

+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| 小文字ファイルシステム | オン |
| 小文字のテーブル名 | 0 |
+------------------------+-------+

パラメータの説明は次のとおりです。

1.lower_case_file_system は、現在のシステム ファイルが大文字と小文字を区別するかどうかを示し、読み取り専用パラメーターであり、変更できません。 ON では大文字と小文字は区別されませんが、OFF では大文字と小文字が区別されます。

  • この変数は、データが保存されているオペレーティング システムのファイル ディレクトリが大文字と小文字を区別するかどうかを示します。 OFF の場合、ファイル名は大文字と小文字を区別し、ON の場合、大文字と小文字を区別しません。この変数は読み取り専用であり、ファイル システムのプロパティを反映するため、これを設定してもファイル システムには影響しません。

2.lower_case_table_names は、テーブル名が大文字と小文字を区別するかどうかを示します。これは変更できます。パラメータは 0、1、2 の 3 つです。

  • 0 大文字と小文字を区別します。 (Unix、Linux のデフォルト) 作成されたライブラリ テーブルはそのままディスクに保存されます。たとえば、create database TeSt; は TeSt ディレクトリを作成し、create table AbCCC ... は AbCCC.frm ファイルをそのまま生成し、SQL ステートメントもそのまま解析されます。
  • 1 大文字と小文字は区別されません。 (Windows のデフォルト) ライブラリ テーブルを作成すると、MySQL はすべてのライブラリ テーブル名を小文字に変換し、ディスクに保存します。 SQL ステートメントは、ライブラリ名とテーブル名も小文字に変換します。 以前に作成した Testtable をクエリする必要がある場合 (Testtable.frm ファイルを生成)、select * from Testtable を実行しても、select * from testtable に変換され、エラー テーブルが存在しなくなります。
  • 2 大文字と小文字を区別しない (OS X のデフォルト) 作成されたライブラリ テーブルはそのままディスクに保存されますが、SQL ステートメントによってライブラリ テーブル名が小文字に変換されます。

MySQLの大文字と小文字の区別を設定する方法

Linux システムの my.cnf ファイルと Windows システムの my.ini ファイルを変更し、次の内容を追加または変更します。

lower_case_table_names = 0 または lower_case_table_names = 1

次に、変更を有効にするために MySQL サービスを再起動します。

開発ノート

  • lower_case_table_names を 0 (区別あり) から 1 (区別なし) に変更する場合は、まず古いデータ テーブルのテーブル名を処理し、すべてのデータベースのテーブル名を小文字に変更してから、lower_case_table_names を 1 に設定する必要があります。そうしないと、テーブル名が見つからないという問題が依然として発生します。
  • lower_case_table_names のデフォルト値は、Windows では 1 (無差別)、macOS では 2 (無差別) です。 Linux では、値 2 はサポートされていないため、サーバーは値を 0 (敏感) に強制します。
  • また、MySQL の担当者は、データ ディレクトリが大文字と小文字を区別しないファイル システム (Windows や macOS など) 上にある場合は、lower_case_table_names を 0 に設定してはならないことも注意喚起しています。
  • そうしないと、MySQL サービスは起動に失敗します。

要約する

オペレーティング システムによって大文字と小文字の区別のデフォルト設定が異なるため、開発中にこれに注意し、意味のない落とし穴を避けるためにすべての SQL ステートメントで小文字を使用する必要があるという厳格な認識を養う必要があります。

以上がMySQLの大文字と小文字の区別に関する注意事項の詳細です。MySQLの大文字と小文字の区別の詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。

以下もご興味があるかもしれません:
  • MySQLの文字タイプは大文字と小文字を区別します
  • MySQL で大文字と小文字を区別しないように設定する方法
  • MySQLの大文字と小文字の区別によって発生する問題の分析
  • MySQLクエリで大文字と小文字を区別しない問題を解決する方法
  • MySQL データベースの大文字と小文字の区別の問題
  • MySQLテーブル名の大文字と小文字を区別しない設定方法の詳細な説明
  • Linux システム MySQL のパスワードを忘れた場合、パスワードをリセットし、テーブル名と列名の大文字と小文字を無視します
  • MySQL クエリ時に文字列の大文字と小文字を区別する方法
  • MySql クエリの大文字と小文字を区別しないソリューション (2)
  • MySQL テーブル名の大文字と小文字の選択

<<:  HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 2)

>>:  nginx 設定ファイルで環境変数を使用する方法

推薦する

docker run によって起動されたコンテナがハングしてデータが失われた場合の対処方法

シナリオの説明あるシステムでは、機能サービスはdocker stack deploy xxxで起動し...

CSSオーバーフローメカニズムについての簡単な説明

CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...

Vueはシンプルなタイマーコンポーネントを実装します

プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...

Centos7.3 での mysql5.7 のインストールと設定のチュートリアル

この記事では、MySQL 5.7のインストールと設定のチュートリアルを参考までに紹介します。具体的な...

すべてのブラウザに対応したデータURIとMHTMLの完全なソリューション

データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...

Vue 父子価値移転、兄弟価値移転、子父価値移転の詳細な説明

目次1. 親コンポーネントが子コンポーネントに値を渡す1. 親コンポーネント.vue 2. サブコン...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

MySQLインデックスの作成について知っておくべきこと

目次序文: 1. インデックスメソッドを作成する2. インデックスを作成するために必要な権限序文: ...

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリと my-default.ini がなく、サービスが起動できない問題の簡単な解決方法 (問題概要)

私は SQL の初心者で、オープンソースのインストールは非常に簡単だと思っていましたが、その過程でい...

XHTML におけるタイトルタグと段落タグの使用に関する詳細な説明

XHTML 見出しの概要Word 文書を作成するときは、「第 1 章」、「1.2.1」などのタイトル...

設計仕様に準拠した設計は良い設計でしょうか?

これまでの数年間、私はいわゆる「設計仕様」についてかなりの数の執筆やコンサルティングを行ってきました...

要素の高さを下から上へ、上から下へ制御する CSS メソッド

よくある質問から議論を始めましょう。CSS を使用して要素の高さを [ブラウザ コンテンツ ウィンド...

MySQL フラッシュバック ツール binlog2sql の詳細なインストールと設定のチュートリアル

概要binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

jQuery ベースのカレンダー効果

この記事では、カレンダー効果を実現するためのjQueryの具体的なコードを例として紹介します。具体的...