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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!