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

推薦する

MySQL の InnoDB ストレージ ファイルの詳細な説明

物理的に言えば、InnoDB テーブルは、共有テーブルスペース ファイル (ibdata1)、排他テ...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...

CentOS に MySQL 5.5 をインストールするための完全な手順

目次1. インストール前の準備、インストールパッケージのダウンロード1 インストールの準備2 インス...

HTML から PDF への変換事例の概要 (複数の画像を推奨)

仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...

html の img src="" で js 関数または js 変数を呼び出して、画像パスを動的に指定します。

この問題に関して、オンライン リソースをたくさん見つけました。ここにいくつかの方法を示します。コード...

JavaScript クロージャの詳細

目次1. クロージャとは何ですか? 2. 閉鎖の役割序文: JavaScript部分ではクロージャが...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

CSSで特殊なグラフィックを描く方法

1. 三角形境界線の設定 コード: 幅: 300ピクセル; 高さ: 300px; 背景: 赤; 境界...

WeChatアプレット認証ログインを処理するエレガントな方法

序文WeChat ミニプログラム プロジェクトでユーザー情報を取得し、ユーザー ログインを実装する場...

Linux ユーザー グループと権限の概要

ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...

LINUX でプロセスを表示する 4 つの方法 (要約)

プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

Tomcatの各ポートの機能の詳細な説明

tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、800...

MySQL SQL ステートメントが遅い場合の一般的な原因と解決策

1. インデックス不足または無効なインデックスによるクエリの遅延数千万件のデータを含むテーブルで、イ...

Vue 手書き読み込みアニメーション プロジェクト

ページが応答しない場合、白い画面が表示されないように、読み込みアニメーションを表示するのがユーザーフ...