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 位置position 属性は、要素の配置タイプを指定します。位置プロパティには 5 つの値が...

時間のかかるMySQLレコードのSQL例の詳細な説明

mysqlは時間のかかるSQLを記録しますMySQL は、最適化と分析のために、時間のかかる SQL...

jQueryは画像追従効果を実現します

この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

Vue でルートをジャンプする方法をご存知ですか?

目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...

MySQLデータベーステーブルの定期バックアップの実装の詳細な説明

Mysqlデータベーステーブルの定期的なバックアップの実装0. 背景実際の開発環境では、フロントエン...

MySQL 基本チュートリアル パート 1 MySQL5.7.18 のインストールと接続チュートリアル

この記事から、MySQL を紹介し学習するための新しい一連の記事がスタートします。なぜ MySQL ...

一般的なMySQLコマンドの概要

mysqlrootパスワードの設定と変更初めて MySQL データベースに入ります。 !環境変数にm...

SpringBoot + Vue プロジェクトを Linux サーバーにデプロイするための詳細なチュートリアル

序文SpringBoot + Vueのフロントエンドとバックエンドを分離したプロジェクトをどのように...

CSS で要素を垂直方向に中央揃えする 7 つの方法

【1】中央の要素の幅と高さを知る絶対値 + 負のマージンコードの実装 .wrapBox5{ 幅: 3...

CocosCreator 一般的なフレームワーク設計リソース管理

目次Cocos Creator のリソース管理に関する問題リソースの依存関係リソースの使用レスローダ...

ウェブサイトの速度を上げる6つの方法

1. .js ライブラリ ファイルのアドレスを Google CDN アドレスに置き換えます。 (G...

Linux lessコマンド例の詳細な説明

ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...

PIP で docker-compose をインストールする際のタイムアウト問題の解決方法

1: インストールコマンドpip install docker-compose例外情報socket....

nginx をシャットダウン/再起動/起動する方法

閉鎖サービス nginx 停止systemctl 停止 nginx起動するサービス nginx 開始...