系列目錄 一、安裝MySql 二、安裝並破解Navicat 三、沒有my.in配置文件怎麼辦 四、設置MySql的大小寫敏感 五、重置MySql登陸密碼 這一篇可以說是我的踩坑的血淚史了。。。 MySql在Windows下預設是大小寫不敏感的,當表名中有大寫字母的時候,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下添加了大小寫敏感之後,重啟服務竟然直接成功了,然直接成功,直接成功了,接成功了,成功了,功了,了。。。
唉踩坑踩的太累,已然沒有心情再去關註到底哪個版本需要哪個版本不需要。。。
先這樣吧,希望看到這篇文章的人以我為鑒,不要再像我一樣被坑了~