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

 系列目錄html

1、安裝MySqlmysql

2、安裝並破解Navicatsql

3、沒有my.in配置文件怎麼辦app

4、設置MySql的大小寫敏感spa

5、重置MySql登錄密碼code


 

這一篇能夠說是個人踩坑的血淚史了。。。server

 

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

 

若是想要設置大小寫敏感,方法網上一搜一大把,總體思路是:blog

 

在MySql的程序目錄下有一個配置文件叫「my.ini」ci

咱們只須要用記事本打開它,而後在[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服務。

具體怎麼新建怎麼綁定,能夠參考前一章內容「3、沒有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(詳細步驟在前一章「3、沒有my.in配置文件怎麼辦」)

 

最後,終於設置成功:

 

BTW,多是由於MySql版本不一樣緣由,個人另外一臺電腦在my.ini下添加了大小寫敏感以後,重啓服務居然直接成功了,然直接成功,直接成功了,接成功了,成功了,功了,了。。。

 

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

先這樣吧,但願看到這篇文章的人以我爲鑑,不要再像我同樣被坑了~

相關文章
相關標籤/搜索