Rumah > Artikel > pangkalan data > Bagaimana untuk menetapkan ketidakpekaan huruf besar dalam mysql
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.
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 '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. 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!