mysql で大文字と小文字を区別しないように設定する方法: 1. 「my.cnf」ファイルを開いて編集します; 2. 「 lower_case_table_names 」項目を見つけて、項目の値を「1」に設定します; 3. 再起動します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 'a' <> 'A'; -> 0 #select 'a' <> BINARY 'A'; -> 1 SET @isNotSame = @newname <> BINARY oldname; IF NOT done && @isNotSame THEN SET @SQL = CONCAT('rename table ',oldname,' to ',@newname); PREPARE tmpstmt FROM @SQL; EXECUTE tmpstmt; DEALLOCATE PREPARE tmpstmt; END IF; UNTIL done END REPEAT; CLOSE cur; END // DELIMITER ; #调用存储过程 #call lowercase('TEST'); #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 サイトの他の関連記事を参照してください。