lower_case_table_name


linux上是區分表名大小寫的,但是可以通過 my.cnf文件中設置不區分!

1、找到my.cnf文件的所在地。

find / -name my.cnf
    

   找到這個文件的位置。我服務器上的位置是 /usr/my.cnf

2、編輯該文件,加入 lower_case_table_name  = 1

cd /usr/
vi my.cnf
   修改后內容如下: 

[mysqld]

lower_case_table_names = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    保存該文件

3、重啟mysql 服務

service mysql restart


做完這些你再去查詢之前的表例如TEST,你會發現還是不行!(嗯,這個問題坑了我兩個小時)

不是說設置這個屬性值就好了嗎?為什么還不行! lower_case_table_name 無效果 ???

官方解釋 ——> 點擊打開鏈接

值 描述
0 表和數據庫名存儲在磁盤上。名稱比較是區分大小寫的。
1
表名以小寫形式存儲在磁盤上,名稱比較不區分大小寫。MySQL將所有表名轉換為小寫的存儲和查找。

這種行為也適用於數據庫名稱和表別名。

2
表和數據庫名稱存儲在磁盤上,使用CREATE Table中指定的lettercase或創建數據庫語句,

但是MySQL將它們轉換為小寫的查找。名稱比較不區分大小寫。這只適用於不區分大小寫的文件系統!InnoDB表名和視圖名以小寫形式存儲,

至於小寫的case_table_name =1。

因為以前的表已經使用大寫的表名存儲了,你查詢的話只是把現在要查詢的表 轉成全小寫 比如 select * from Test 在執行時他會轉成 select * from test ,但是還是對不上以前的表。這個時候你可以把以前的表全都改成小寫就可以了。從你把這個值改成1之后建立的表就不會有這種問題了。

 

mysql8新增特性:

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.

意思是只有當數據庫初始化修改lower_case_table_names才能生效。

---------------------
作者:無需有太多
來源:CSDN
原文:https://blog.csdn.net/qq_35170213/article/details/80352574
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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