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 設定ファイルで環境変数を使用する方法

推薦する

ウェブページのCSSの優先順位について詳しく説明します

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

HTMLの基本概念の詳細な説明

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...

ページのスクロールバーを無効にするには、overflow: hiddenを使用します。

コードをコピーコードは次のとおりです。 html {オーバーフロー: 非表示; }体{オーバーフロー...

Centos7.3 Nginx をインストールして展開し、https を設定する方法

設置環境1. gccのインストールnginxをインストールするには、まず公式サイトからダウンロードし...

CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...

Flexboxレイアウトの最もシンプルなフォーム実装

フレキシブル レイアウト (Flexbox) はますます人気が高まっており、CSS レイアウトの記述...

3 階層ナビゲーション メニューを実現するための js+css

この記事の例では、3レベルのナビゲーションメニューを実装するためのjs + cssの具体的なコードを...

MySQL アクティブ-アクティブ同期レプリケーションの 4 つのソリューションの詳細な説明

目次MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションGaleraレプ...

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

Linux のユーザーとグループ管理によく使われるコマンドの概要

この記事では、Linux のユーザーとグループの管理によく使用されるコマンドをまとめます。ご参考まで...

Linux環境にRedisをデプロイし、Dockerにインストールする方法

インストール手順1. Redisをインストールするdocker search redis和docke...

Linux 継続的インテグレーションで Maven を自動的にインストールする方法

Mavenパッケージを解凍する tar xf apache-maven-3.5.4-bin.tar....

nginx でクロスドメイン障害修復を構成する方法の例

Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...

MySQL 8.0.22 の最新バージョンのダウンロードとインストールの超詳細なチュートリアル (Windows 64 ビット)

目次序文1. 公式サイトからMySQL 8.0.22をダウンロードする2. 環境変数を設定する3. ...