在Linux系統(tǒng)上使用MySQL,MySQL是區(qū)分字母大小寫的皮壁,例如建A表時(shí)表名是大寫的A椭更,修改A表時(shí)腳本里寫的a,就會(huì)報(bào)錯(cuò)表a不存在蛾魄。在MySQL中虑瀑,數(shù)據(jù)庫(kù)對(duì)應(yīng)數(shù)據(jù)目錄中的目錄,數(shù)據(jù)庫(kù)中的每個(gè)表至少對(duì)應(yīng)數(shù)據(jù)庫(kù)目錄中的一個(gè)文件或多個(gè)文件滴须,所以舌狗,是否區(qū)分大小寫是其所在的操作系統(tǒng)決定的。在大多數(shù)基于Unix的系統(tǒng)中扔水,MySQL是區(qū)分大小寫的痛侍;而在Windows系統(tǒng)中,MySQL是不區(qū)分大小寫的。
操作系統(tǒng)中提供了lower_case_table_names參數(shù)用于修改這種區(qū)分大小寫的策略主届。默認(rèn)情況下赵哲,Linux系統(tǒng)下
lower_case_table_names=0,Windows系統(tǒng)下lower_case_table_names=1君丁,而MacOS下lower_case_table_names=2枫夺。0表示使用指定的大小寫字母在硬盤上保存表名和數(shù)據(jù)庫(kù)名,并且區(qū)分字母大小寫绘闷;1表示表名在硬盤上以小寫保存橡庞,MySQL將所有表名轉(zhuǎn)換為小寫在存儲(chǔ)和查找表上,不區(qū)分字母大小寫印蔗;2表示表名和數(shù)據(jù)庫(kù)名在硬盤上使用指定的大小寫字母進(jìn)行保存扒最,但MySQL將它們轉(zhuǎn)換為小寫在查找表上,不區(qū)分字母大小寫华嘹。
如果想在Linux系統(tǒng)中修改lower_case_table_names的值吧趣,讓其不區(qū)分字母大小寫,Google出來(lái)的操作步驟大部分都是下面這種:
1.以root登錄系統(tǒng)
2.cd /etc/mysql/
3.sudo vim my.cnf
4.在[mysqld]后添加添加lower_case_table_names=1
5.重新啟動(dòng)數(shù)據(jù)庫(kù)
然而除呵,有些時(shí)候會(huì)出現(xiàn)一些特殊情況再菊,例如爪喘,打開my.cnf發(fā)現(xiàn)里面并沒有[mysqld]颜曾,而是如下的內(nèi)容:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
這時(shí)候,如果直接在里面添加lower_case_table_names=1秉剑,則會(huì)導(dǎo)致無(wú)法和MySQL建立連接的錯(cuò)誤產(chǎn)生泛豪。正確做法如下:
1.以root登錄系統(tǒng)
2.cd /etc/mysql/
3.sudo vim my.cnf
如果發(fā)現(xiàn)my.cnf中沒有“[mysqld]”,只有如下內(nèi)容:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
則侦鹏,cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf
4.在[mysqld]后添加添加lower_case_table_names=1
5.重新啟動(dòng)數(shù)據(jù)庫(kù)