MySQL修改lower_case_table_names參數(shù)的方法實(shí)踐
環(huán)境:MySQL 5.7.25
起初創(chuàng)建環(huán)境時(shí)沒有要求表名稱不區(qū)分大小寫,后續(xù)應(yīng)用使用提出要設(shè)置lower_case_table_names=1
的需求,期望表名不再區(qū)分大小寫。
修改這個(gè)參數(shù)需要重啟實(shí)例,另外一定要注意該參數(shù)修改會(huì)導(dǎo)致之前大寫存儲(chǔ)的表將無法識(shí)別,需要特殊處理。
1.默認(rèn)區(qū)分大小寫的環(huán)境
默認(rèn)在lower_case_table_names=0的情況下,表名是嚴(yán)格區(qū)分大小寫的,若查詢時(shí)大小寫弄混淆就會(huì)直接報(bào)錯(cuò)表不存在,現(xiàn)象如下:
root@mysqldb 12:33: [test]> show tables; +----------------+ | Tables_in_test | +----------------+ | T1 | | t2 | +----------------+ 2 rows in set (0.00 sec) root@mysqldb 12:33: [test]> show variables like '%case%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 0 | +------------------------+-------+ 2 rows in set (0.02 sec) root@mysqldb 12:34: [test]> select * from T1; Empty set (0.00 sec) root@mysqldb 12:34: [test]> select * from t2; Empty set (0.00 sec) root@mysqldb 12:34: [test]> select * from t1; ERROR 1146 (42S02): Table 'test.t1' doesn't exist root@mysqldb 12:34: [test]> select * from T2; ERROR 1146 (42S02): Table 'test.T2' doesn't exist root@mysqldb 12:34: [test]>
2.修改參數(shù)lower_case_table_names
在my.cnf配置文件中[mysqld]標(biāo)簽的作用區(qū)域,增加`lower_case_table_names=1`的配置,然后重啟MySQL服務(wù):
service mysqld restart
3.驗(yàn)證表名區(qū)分大小寫情況
重啟實(shí)例后,確認(rèn)參數(shù)已修改:
root@mysqldb 12:58: [test]> show variables like 'lower_case_table_names'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_table_names | 1 | +------------------------+-------+ 1 row in set (0.00 sec)
發(fā)現(xiàn)原表t2
,在參數(shù)修改后,通過t2和T2都可以訪問,滿足需求。
但是原表T1
,在參數(shù)修改后,通過t1和T1都無法訪問,細(xì)看報(bào)錯(cuò)可以看到無論我們傳入T1還是t1,都是按照小寫的t1來解析。
root@mysqldb 12:46: [(none)]> use test Database changed root@mysqldb 12:46: [test]> show tables; +----------------+ | Tables_in_test | +----------------+ | T1 | | t2 | +----------------+ 2 rows in set (0.01 sec) root@mysqldb 12:46: [test]> select * from t1; ERROR 1146 (42S02): Table 'test.t1' doesn't exist root@mysqldb 12:47: [test]> select * from T2; Empty set (0.01 sec) root@mysqldb 12:47: [test]> select * from T1; ERROR 1146 (42S02): Table 'test.t1' doesn't exist root@mysqldb 12:47: [test]> select * from t2; Empty set (0.00 sec)
如果此時(shí)應(yīng)用再重新創(chuàng)建T1表,就會(huì)被存儲(chǔ)為小寫的t1:
root@mysqldb 13:03: [test]> create table T1(id int); Query OK, 0 rows affected (0.08 sec) root@mysqldb 13:03: [test]> show tables; +----------------+ | Tables_in_test | +----------------+ | T1 | | t1 | | t2 | +----------------+ 3 rows in set (0.00 sec) root@mysqldb 13:03: [test]> select * from T1; Empty set (0.00 sec) root@mysqldb 13:03: [test]> select * from t1; Empty set (0.00 sec)
至于之前的T1,如果想要清理刪除,可改回lower_case_table_names=0后進(jìn)行刪除。
總結(jié):如果有不區(qū)分大小寫這樣的需求,在建庫(kù)配置時(shí)就要及早提出,不然后期更改不但要停機(jī),還很可能需要特殊處理。
如果不幸遇到這樣的情況,操作之前先使用mysqldump進(jìn)行導(dǎo)出備份,然后刪除所有含有大寫的表,成功修改參數(shù)后再進(jìn)行導(dǎo)入即可。
到此這篇關(guān)于MySQL修改lower_case_table_names參數(shù)的文章就介紹到這了,更多相關(guān)MySQL lower_case_table_names修改參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IP處理函數(shù)inet_aton()和inet_ntoa()使用說明
IP處理函數(shù)inet_aton()和inet_ntoa()使用說明,需要的朋友可以參考下2012-03-03MySQL按時(shí)間統(tǒng)計(jì)數(shù)據(jù)的方法總結(jié)
在本篇MYSQL的內(nèi)容里,我們給大家整理了關(guān)于按時(shí)間統(tǒng)計(jì)數(shù)據(jù)的方法內(nèi)容,有需要的朋友們學(xué)習(xí)下。2019-02-02MySQL數(shù)據(jù)庫(kù)恢復(fù)(使用mysqlbinlog命令)
binlog是通過記錄二進(jìn)制文件方式來備份數(shù)據(jù),然后在從二進(jìn)制文件將數(shù)據(jù)恢復(fù)到某一時(shí)段或某一操作點(diǎn)。2011-08-08mysql之?dāng)?shù)據(jù)庫(kù)常用腳本總結(jié)
這篇文章主要介紹了mysql之?dāng)?shù)據(jù)庫(kù)常用腳本總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03在SpringBoot中實(shí)現(xiàn)WebSocket會(huì)話管理的方案
在構(gòu)建實(shí)時(shí)通信應(yīng)用時(shí),WebSocket 無疑是一個(gè)強(qiáng)大的工具,SpringBoot提供了對(duì)WebSocket的支持,本文旨在探討如何在 Spring Boot 應(yīng)用中實(shí)現(xiàn) WebSocket 會(huì)話管理,我們將通過一個(gè)模擬的場(chǎng)景一步步展開討論,需要的朋友可以參考下2023-11-11Mysql數(shù)據(jù)庫(kù)的日志管理、備份與回復(fù)詳細(xì)圖文教程
備份的主要目的是災(zāi)難恢復(fù),備份還可以測(cè)試應(yīng)用、回滾數(shù)據(jù)修改、查詢歷史數(shù)據(jù)、審計(jì)等,這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫(kù)的日志管理、備份與回復(fù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08數(shù)據(jù)庫(kù)賬號(hào)密碼加密詳解及實(shí)例
這篇文章主要介紹了數(shù)據(jù)庫(kù)賬號(hào)密碼加密詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-03-03