ホームページ > データベース > mysql チュートリアル > mysqlで大文字と小文字を区別しないように設定する方法

mysqlで大文字と小文字を区別しないように設定する方法

青灯夜游
リリース: 2022-01-06 12:00:06
オリジナル
12391 人が閲覧しました

mysql で大文字と小文字を区別しないように設定する方法: 1. 「my.cnf」ファイルを開いて編集します; 2. 「 lower_case_table_names 」項目を見つけて、項目の値を「1」に設定します; 3. 再起動しますmysql 以上です。

mysqlで大文字と小文字を区別しないように設定する方法

このチュートリアルの動作環境: linux5.9.8 システム、mysql8 バージョン、Dell G3 コンピューター。

1. 原則とパラメータ

Mysql の大文字と小文字を区別する設定は、2 つのパラメータ - lower_case_file_system と lower_case_table_names に関連しています

現在の mysql のケースを表示する-sensitive 構成

show global variables like '%case%';
 
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 0     |
+------------------------+-------+
ログイン後にコピー
  • lower_case_file_system: 現在のシステム ファイルが大文字と小文字を区別するかどうかを示します (ON は大文字と小文字を区別しないことを意味し、OFF は大文字と小文字を区別することを意味します)。これは変更できない読み取り専用パラメータです。 。

  • lower_case_table_names: テーブル名が大文字と小文字を区別し、変更できるかどうかを示します。

    • lower_case_table_names = 0 の場合、mysql はテーブル名に基づいて直接動作し、大文字と小文字が区別されます。

    • lower_case_table_names = 1 の場合、mysql は操作を実行する前にまずテーブル名を小文字に変換します。

2. 変更前の準備

lower_case_table_names = 1 のため、mysql はまずテーブル名を小文字に変換します。テーブルの作成時にテーブル名が大文字である場合、大文字と小文字を区別しないように設定した後はテーブルが見つかりません。 Oracle はテーブルを作成し、create table "test" と書き込み、それを見つけるために select * from test を使用するように感じます。これは、Oracle が test を自動的に大文字に変換するためです。

したがって、まずライブラリ内のすべてのテーブル名を小文字に変更する必要があります。 mysql には組み込みメソッドがありません。ストアド プロシージャを作成して変更できます。

DELIMITER //  
    
DROP PROCEDURE IF EXISTS lowercase //  
CREATE PROCEDURE lowercase(IN dbname VARCHAR(200))  
BEGIN     
DECLARE done INT DEFAULT 0;  
DECLARE oldname VARCHAR(200);  
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = dbname;  
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
 
OPEN cur;  
REPEAT  
FETCH cur INTO oldname;  
SET @newname = LOWER(oldname);  
    
#IF newname equals to oldname, do nothing;  
#select &#39;a&#39; <> &#39;A&#39;; -> 0  
#select &#39;a&#39; <> BINARY &#39;A&#39;; -> 1  
SET @isNotSame = @newname <> BINARY oldname;  
IF NOT done && @isNotSame THEN 
SET @SQL = CONCAT(&#39;rename table &#39;,oldname,&#39; to &#39;,@newname);
PREPARE tmpstmt FROM @SQL;      
EXECUTE tmpstmt;      
DEALLOCATE PREPARE tmpstmt;      
END IF;      
UNTIL done END REPEAT;      
CLOSE cur;     
END //      
DELIMITER ;
 
#调用存储过程 
#call lowercase(&#39;TEST&#39;);
#TEST为你想要修改的数据库的名称
ログイン後にコピー

3. 正式な設定

vi my.cnf file, set lower_case_table_names = 1, mysql の再起動後に有効になります

vi my.cnf
#添加
lower_case_table_names = 1
ログイン後にコピー

[関連推奨事項:mysql ビデオ チュートリアル ]

以上がmysqlで大文字と小文字を区別しないように設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート