【詳記MySql問題大全集】四、設置MySql大小寫敏感(踩坑血淚史)


 系列目錄

一、安裝MySql

二、安裝並破解Navicat

三、沒有my.in配置文件怎么辦

四、設置MySql的大小寫敏感

五、重置MySql登陸密碼


 

這一篇可以說是我的踩坑的血淚史了。。。

 

MySql在Windows下默認是大小寫不敏感的,當表名中有大寫字母的時候,MySql會直接把它轉化成小寫之后存儲。

 

如果想要設置大小寫敏感,方法網上一搜一大把,整體思路是:

 

在MySql的程序目錄下有一個配置文件叫“my.ini”

我們只需要用記事本打開它,然后在[mysqld]標記下添加一行代碼:

lower_case_table_names = 0

 

保存之后重啟MySql服務就可以了。

 

思路很清晰,步驟看着也很簡單,但是這里面遍布的大大小小無數的坑。。。下面我就來挨個踩踩填填~

 

  坑No.1:MySql程序文件夾下沒有my.ini文件

這里有兩種情況,跟安裝MySql的方式有關。

 

針對Windows系統,MySql官網(https://dev.mysql.com/downloads/mysql/)給了兩種安裝方式:

一種是下載MSI安裝,這種安裝模式和一般的軟件安裝程序一樣,運行之后系統會有一個引導程序,你只需要一直點擊“下一步”就能安裝完成;

另一種是下載ZIP文件安裝,這種方式下載解壓之后,解壓出來的文件就是MySql程序本身,不需要執行安裝程序,可以直接使用。

 

針對第一種情況,MSI安裝,安裝之后系統是會自動生成my.ini配置文件的,如果在主程序文件目錄找不到,那么可以去你安裝MySql的磁盤下的ProgramData文件下找找,一般的默認路徑是:

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

 

這我很早之前裝的版本,位置是這樣的:

針對第二種,ZIP安裝,這種安裝模式是沒有my.ini配置文件的。。。需要自己新建一個my.ini文件,然后綁定到MySql服務。

具體怎么新建怎么綁定,可以參考前一章內容“三、沒有my.in配置文件怎么辦”,這一章主要講采坑,細節就不講了~

 

  坑No.2:到底是0、1還是2

my.ini下設置大小寫敏感的語句是:

lower_case_table_names = x

 

這里的x到底應該寫0還是1還是2?

網上這三種版本都有,還有說是跟MySql的版本有關的。

 

其實,0,1,2這三個數字全都是合法的,而且它們所代表的意思都不一樣:

#If set to 0, table names are stored as specified and comparisons are case sensitive.   
#If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.   
#If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases.  
lower_case_table_names = 2

 

簡單說,就是;

0:存儲和比較都是大小寫敏感的,比如:新建一張表叫“TestTable”,再建一張表叫“testtable”也是可以的

1:大小寫不敏感,新建的時候系統會同意轉化成小寫

2:存儲大小寫敏感,但是比較的時候會轉化為小寫比較,比如:新建一張表叫“TestTable”,顯示的時候是大小寫都有的,但是當再新建一張“testtable”的時候就會報錯,因為比較是統一轉換成小寫比較的。

 

如果想設置大小寫敏感的話,個人建議,盡量不要使用0,而使用2。

當然,有特殊需求的話,非要使用0也是可以的。

  坑No.3:在my.ini添加了大小寫敏感之后無法啟動MySql服務

這一個應該是最大的坑了。

當在my.ini文件下添加“lower_case_table_names = 2”后,重啟服務,卻顯示:

 

或者是這樣:

 

然后,把這行設置從my.ini刪除之后,就又可以啟動服務了。

明明是按照網上說的步驟一步一步來的,怎么就報錯了呢?

 

最后被逼無奈,只能去翻MySQl的官方文檔。

然后就發現了下面這段話:

lower_case_table_names can only be configured when initializing the server. 
Changing the lower_case_table_names setting after the server is initialized is prohibited.

 

意思是大小寫敏感只能在安裝MySql初始化之前設置,之后是不行的。。。

 

解決辦法是要先刪除服務,然后在my.ini文件下編輯好大小寫敏感設置,編輯好之后再去使用這個my.ini文件安裝初始化MySql(詳細步驟在前一章“三、沒有my.in配置文件怎么辦”)

 

最后,終於設置成功:

 

BTW,可能是因為MySql版本不同原因,我的另一台電腦在my.ini下添加了大小寫敏感之后,重啟服務竟然直接成功了,然直接成功,直接成功了,接成功了,成功了,功了,了。。。

 

唉踩坑踩的太累,已然沒有心情再去關注到底哪個版本需要哪個版本不需要。。。

先這樣吧,希望看到這篇文章的人以我為鑒,不要再像我一樣被坑了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM