


Linux下Mysql表名的大小寫問題
MySQL在Linux下數(shù)據(jù)庫名、表名、列名、alias.html' target='_blank'>別名大小寫規(guī)則是這樣的:
1、數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的;
2、表的別名是嚴(yán)格區(qū)分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴(yán)格區(qū)分大小寫的;
MySQL在Windows下都不區(qū)分大小寫。
所以在不同操作系統(tǒng)中為了能使程序和數(shù)據(jù)庫都能正常運行,最好的辦法是在設(shè)計的時候都轉(zhuǎn)為小寫,但是如果在設(shè)計的時候已經(jīng)規(guī)范化大小寫了,那么在Windows環(huán)境下只要對數(shù)據(jù)庫的配置做下改動就行了,具體操作如下:
在MySQL的配置文件中my.ini [mysqld] 中增加一行
lower_case_table_names = 1
參數(shù)解釋:
0:區(qū)分大小寫
1:不區(qū)分大小寫
在 MySQL 中,數(shù)據(jù)庫和表對就于那些目錄下的目錄和文件。因而,操作系統(tǒng)的敏感性決定數(shù)據(jù)庫和表命名的大小寫敏感。這就意味著數(shù)據(jù)庫和表名在 Windows 中是大小寫不敏感的,而在大多數(shù)類型的 Unix 系統(tǒng)中是大小寫敏感的。
奇怪的是列名與列的別名在所有的情況下均是忽略大小寫的,而表的別名又是區(qū)分大小寫的。
要避免這個問題,你最好在定義數(shù)據(jù)庫命名規(guī)則的時候就全部采用小寫字母加下劃線的組合,而不使用任何的大寫字母。
或者也可以強制以 -O lower_case_table_names=1 參數(shù)啟動 mysqld(如果使用 --defaults-file=...\my.cnf 參數(shù)來讀取指定的配置文件啟動 mysqld 的話,你需要在配置文件的 [mysqld] 區(qū)段下增加一行 lower_case_table_names=1)。這樣MySQL 將在創(chuàng)建與查找時將所有的表名自動轉(zhuǎn)換為小寫字符(這個選項缺省地在 Windows 中為 1 ,在 Unix 中為 0。從 MySQL 4.0.2 開始,這個選項同樣適用于數(shù)據(jù)庫名)。
當(dāng)你更改這個選項時,你必須在啟動 mysqld 前首先將老的表名轉(zhuǎn)換為小寫字母。
換句話說,如果你希望在數(shù)據(jù)庫里面創(chuàng)建表的時候保留大小寫字符狀態(tài),則應(yīng)該把這個參數(shù)置0: lower_case_table_names=1 。否則的話你會發(fā)現(xiàn)同樣的sqldump腳本在不同的操作系統(tǒng)下最終導(dǎo)入的結(jié)果不一樣(在Windows下所有的大寫字符都變成小寫了)。
工作中碰到的問題:
在LINUX下調(diào)一個程序老說找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,為什么程序就找不到表呢?
后來網(wǎng)上查了下,原來是LINUX下的MYSQL默認(rèn)是要區(qū)分表名大小寫。
讓MYSQL不區(qū)分表名大小寫的方法其實很簡單:
1.用ROOT登錄,修改/etc/my.cnf【】
2.在[mysqld]下加入一行:lower_case_table_names=1
3.重新啟動數(shù)據(jù)庫即可
關(guān)鍵字:Linux、Mysql、數(shù)據(jù)庫
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解