Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menetapkan ketidakpekaan huruf besar dalam mysql

Bagaimana untuk menetapkan ketidakpekaan huruf besar dalam mysql

青灯夜游
青灯夜游asal
2022-01-06 12:00:0612387semak imbas

Cara menetapkan ketidakpekaan huruf besar dalam mysql: 1. Buka dan edit fail "my.cnf" 2. Cari item "nama_jadual_huruf kecil" dan tetapkan nilai item kepada "1"; mysql Itu sahaja.

Bagaimana untuk menetapkan ketidakpekaan huruf besar dalam mysql

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, versi mysql8, komputer Dell G3.

1. Prinsip dan parameter

Konfigurasi sensitif huruf besar MySQL berkaitan dengan dua parameter - lower_case_file_system dan lower_case_table_names

Lihat mysql semasa Konfigurasi sensitiviti huruf besar

show global variables like '%case%';
 
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 0     |
+------------------------+-------+
  • sistem_fail_huruf_kecil: Menunjukkan sama ada fail sistem semasa sensitif huruf besar (ON tidak sensitif, OFF sensitif), parameter baca sahaja, tidak boleh diubah suai .

  • nama_jadual_huruf kecil: Menunjukkan sama ada nama jadual adalah sensitif huruf besar dan boleh diubah suai.

    • Apabila nama_jadual_huruf kecil = 0, mysql akan beroperasi terus berdasarkan nama jadual dan sensitif huruf besar.

    • Apabila nama_jadual_huruf kecil = 1, mysql akan menukar nama jadual kepada huruf kecil dahulu sebelum menjalankan operasi.

2. Persediaan sebelum pengubahsuaian

Sebab lower_case_table_names = 1, mysql akan menukar nama jadual kepada huruf kecil terlebih dahulu Nama itu dalam huruf besar, dan ia tidak akan ditemui selepas menetapkan ketidakpekaan huruf besar. Rasanya seperti Oracle mencipta jadual dan menulis "ujian" buat jadual dan kemudian menggunakan pilih * daripada ujian untuk mencarinya, kerana Oracle secara automatik menukar ujian kepada huruf besar.

Jadi kita perlu menukar semua nama jadual dalam perpustakaan kepada huruf kecil dahulu. Tiada kaedah terbina dalam mysql, anda boleh menulis prosedur tersimpan untuk mengubah suainya.

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. Tetapan formal

vi fail my.cnf, tetapkan nama_jadual_huruf kecil = 1, ia akan berkuat kuasa selepas memulakan semula mysql

vi my.cnf
#添加
lower_case_table_names = 1

【 Pengesyoran berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci Bagaimana untuk menetapkan ketidakpekaan huruf besar dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn