亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

深入淺析MySQL 中 Identifier Case Sensitivity問題

2024-07-25 19:09:02
字體:
來源:轉載
供稿:網友

在MySQL當中,有可能遇到表名大小寫敏感的問題。其實這個跟平臺(操作系統)有關,也跟系統變量lower_case_table_names有關系。下面總結一下,有興趣可以查看官方文檔“Identifier Case Sensitivity”

In MySQL, databases correspond to directories within the data directory. Each table within a database corresponds to at least one file within the database directory (and possibly more, depending on the storage engine). Triggers also correspond to files. Consequently, the case sensitivity of the underlying operating system plays a part in the case sensitivity of database, table, and trigger names. This means such names are not case-sensitive in Windows, but are case-sensitive in most varieties of Unix. One notable exception is macOS, which is Unix-based but uses a default file system type (HFS+) that is not case-sensitive. However, macOS also supports UFS volumes, which are case-sensitive just as on any Unix. See Section 1.8.1, “MySQL Extensions to Standard SQL”. Thelower_case_table_names system variable also affects how the server handles identifier case sensitivity, as described later in this section.

在 MySQL 中, 數據庫對應于數據目錄中的目錄。數據庫中的每個表對應于數據庫目錄中至少一個文件 (可能更多, 具體取決于存儲引擎)。觸發器也對應于文件。因此, 底層操作系統的區分大小寫在數據庫、表和觸發器名稱的大小寫敏感度方面起著重要作用。這意味著這些名稱在 Windows 中不區分大小寫, 但在大多數類型的 Unix 中都是區分大小寫的。一個顯著的例外是 macOS, 它是基于 Unix 的, 但使用的是不區分大小寫的默認文件系統類型 (HFS+)。但是, macOS 還支持 UFS 卷, 它們與任何 Unix 一樣都是區分大小寫的。參見1.8.1 節, “MySQL Extensions to Standard SQL“。lower_case_table_names 系統變量還影響服務器處理標識符大小寫靈敏度的方式, 如本節后面所述。

 Linux系統:

數據庫名與表名是嚴格區分大小寫的;
表的別名是嚴格區分大小寫的;
列名與列的別名在所有的情況下均是忽略大小寫的;
變量名也是嚴格區分大小寫的;

Windows系統:

都不區分大小寫
Mac OS下(非UFS卷):
都不區分大小寫

注意事項:列名、索引、存儲過程、事件名稱在任何平臺上都不區分大小寫,列別名也不區分大小寫。

Notice:Column, index, stored routine, and event names are not case sensitive on any platform, nor are column aliases.

下面在測試環境為Red Hat Enterprise Linux Server release 5.7, MySQL 5.6.20:

mysql> show variables like 'lower_case_table_names';+------------------------+-------+| Variable_name     | Value |+------------------------+-------+| lower_case_table_names | 0   |+------------------------+-------+1 row in set (0.00 sec)mysql> mysql> use mydb;Database changedmysql> create table test(id int);Query OK, 0 rows affected (0.07 sec)mysql> create table TEST(id int);Query OK, 0 rows affected (0.09 sec)mysql> insert into test values(1);Query OK, 1 row affected (0.03 sec)mysql> insert into TEST value(2);Query OK, 1 row affected (0.00 sec)mysql> select * from test;+------+| id  |+------+|  1 |+------+1 row in set (0.00 sec)mysql> select * from TEST;+------+| id  |+------+|  2 |+------+1 row in set (0.00 sec)mysql>

在配置文件my.cnf中設置lower_case_table_names=1后(1表示不區分大小寫,0表示區分大小寫),重啟MySQL服務后,進行如下測試:

mysql> use mydb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select * from test;+------+| id  |+------+|  1 |+------+1 row in set (0.00 sec)mysql> select * from TEST;+------+| id  |+------+|  1 |+------+1 row in set (0.00 sec)mysql>

MySQL,Identifier,Case,Sensitivity

可以看到此時不管是test、TEST抑或Test,都是訪問的test,此時不能訪問”TEST”表了,系統變量lower_case_table_names是只讀變量,也無法在當前會話修改,這種設置下,如果存在相同的表名的話,使用mysqldump備份數據庫時會遇到下面錯誤:

mysqldump: Got error: 1066: Not unique table/alias: ‘test' when using LOCK TABLES

遇到這種情況就比較麻煩了,必須在配置文件my.cnf中設置變量lower_case_table_names=0,重啟MySQL服務,所以提前規劃,使用統一的命名規則就非常重要,可以避免這樣的問題出現。另外系統變量lower_case_table_names有三個值:分別是0、1、2.

1. 設置成0:表名按你寫的SQL大小寫存儲,大寫就大寫小寫就小寫,比較時大小寫敏感。

2. 設置成1:表名轉小寫后存儲到硬盤,比較時大小寫不敏感。 

3. 設置成2:表名按你寫的SQL大小寫存儲,大寫就大寫小寫就小寫,比較時統一轉小寫比較。

 

MySQL,Identifier,Case,Sensitivity
 
 
關于數據庫名大小寫敏感,會遇到下面問題:

 

1:ERROR 1010 (HY000): Error dropping database (can't rmdir ‘./xxxx', errno: 39)

1:ERROR 1010 (HY000): Error dropping database (can't rmdir './xxxx', errno: 39)  

mysql> show databases;+--------------------+| Database      |+--------------------+| information_schema || MyDB        || mydb        || mysql       || performance_schema || tmonitor      || xiangrun      |+--------------------+7 rows in set (0.01 sec)mysql> show variables like 'lower_case_table_names';+------------------------+-------+| Variable_name     | Value |+------------------------+-------+| lower_case_table_names | 1   |+------------------------+-------+1 row in set (0.00 sec)mysql> drop database mydb;ERROR 1010 (HY000): Error dropping database (can't rmdir './mydb', errno: 39)mysql>

解決方法:在配置文件my.cnf中設置變量lower_case_table_names=0,重啟MySQL服務,然后就可以drop 掉數據庫了。

2: ERROR 1049 (42000): Unknown database ‘xxx'

mysql> show variables like 'lower_case_table_names';+------------------------+-------+| Variable_name     | Value |+------------------------+-------+| lower_case_table_names | 1   |+------------------------+-------+1 row in set (0.01 sec)mysql> mysql> show databases;+--------------------+| Database      |+--------------------+| information_schema || MyDB        || mysql       || performance_schema || tmonitor      || xiangrun      |+--------------------+6 rows in set (0.01 sec)mysql> use MyDB;ERROR 1049 (42000): Unknown database 'mydb'mysql>

參考資料:

https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

總結

以上所述是小編給大家介紹的MySQL 中 Identifier Case Sensitivity問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲国产视频| 久久精品视频99| 国产一区二区黑人欧美xxxx| 91中文字幕在线观看| 最近的2019中文字幕免费一页| 日韩精品免费在线视频观看| 欧美一区二区影院| 91精品国产网站| 久久国产精品久久精品| 亚洲天堂成人在线视频| 欧美性理论片在线观看片免费| 热久久99这里有精品| 亚洲综合小说区| 97香蕉久久超级碰碰高清版| 亚洲国产精品va在线| 亚洲va欧美va在线观看| 蜜臀久久99精品久久久久久宅男| 97视频在线播放| 久久久精品视频成人| 国产精品美女久久| 在线观看国产精品日韩av| 亚洲国产99精品国自产| 91精品国产色综合| 亚洲自拍高清视频网站| 久久久久久久av| 清纯唯美亚洲综合| 国产精品青青在线观看爽香蕉| 91欧美激情另类亚洲| 亚州精品天堂中文字幕| 这里只有精品丝袜| 色爱av美腿丝袜综合粉嫩av| 色婷婷综合成人av| 国产精品高精视频免费| 久久精品国产久精国产思思| 亚洲精品免费一区二区三区| 国产精品免费一区二区三区都可以| 国产精品久久久久久久久久新婚| 久久九九国产精品怡红院| 亚洲人成在线免费观看| 成人性生交大片免费看视频直播| 久久久噜噜噜久久中文字免| 45www国产精品网站| 色小说视频一区| 久久久精品国产一区二区| 久久精品视频导航| 亚洲成人a**站| 日韩精品极品在线观看播放免费视频| 欧美另类老肥妇| 久久久久久久av| 欧美亚洲国产另类| 国产成人激情视频| 亚洲欧洲偷拍精品| 久久久天堂国产精品女人| 国产日韩欧美91| 久久精品成人欧美大片古装| 91亚洲永久免费精品| 欧美电影在线观看| 国模精品视频一区二区三区| 国产日韩欧美视频| 国产精品综合网站| 狠狠色噜噜狠狠狠狠97| 久久久精品久久| 国产一区二区美女视频| 538国产精品一区二区免费视频| 亚洲毛片在线免费观看| 欧美裸体xxxxx| 在线视频欧美日韩| 亚洲美女av在线播放| 久久精品欧美视频| 精品久久久国产精品999| 国产在线观看91精品一区| 欧美裸体xxxx| 久久精品国产一区| 国产成人综合亚洲| 日韩中文字幕视频| 欧美高清视频免费观看| 精品少妇一区二区30p| 91久久久在线| 日本欧美在线视频| 亚洲精品一区二区三区不| 日韩中文字幕国产精品| 97国产成人精品视频| 亚洲免费av网址| 色婷婷**av毛片一区| 国产91在线播放九色快色| 亚州成人av在线| 欧美另类第一页| 91av免费观看91av精品在线| 好吊成人免视频| 日韩av中文在线| 日韩欧美a级成人黄色| 日本精品在线视频| 中文字幕av一区| 久久国产精品久久久久| 亚洲xxx大片| 日韩欧美一区视频| 欧美日韩视频免费播放| 综合136福利视频在线| 亚洲自拍偷拍色图| 国产午夜精品免费一区二区三区| 国产91精品久久久| 久久香蕉精品香蕉| 欧美另类老女人| 国产精品wwww| 国产精品久久精品| 久久久久久亚洲| 18一19gay欧美视频网站| 亲爱的老师9免费观看全集电视剧| 精品亚洲va在线va天堂资源站| 91九色视频导航| 欧美激情网友自拍| 中文字幕亚洲一区二区三区| 国产精品美女www| 国产www精品| 国产午夜精品久久久| 国产午夜精品免费一区二区三区| 精品视频久久久久久久| 国产视频综合在线| 久久久久久久色| 正在播放亚洲1区| 色婷婷久久av| 97精品视频在线| 国产精品美女www爽爽爽视频| 精品日韩视频在线观看| 日韩av中文在线| 日韩av在线电影网| 日韩av在线播放资源| 国产成人aa精品一区在线播放| 国产精品夜色7777狼人| 日韩av在线直播| www.国产精品一二区| 亚洲xxxx视频| 国产精品久久久久久亚洲影视| 欧美日韩一区二区在线播放| 亚洲人av在线影院| 国产亚洲精品久久久久久777| 欧美国产日韩精品| 久久精品久久久久久国产 免费| 超碰97人人做人人爱少妇| 国产精品久久久久aaaa九色| 成人黄色av免费在线观看| 红桃av永久久久| 久久精品2019中文字幕| 久久免费国产视频| 2018日韩中文字幕| 国产女人18毛片水18精品| 国产+人+亚洲| 亚洲国产日韩欧美在线动漫| 精品视频在线播放| 欧美视频在线观看免费| 欧美大片大片在线播放| 精品日韩中文字幕| 欧美三级xxx| 精品国产老师黑色丝袜高跟鞋| 精品国产乱码久久久久酒店| 91久久夜色精品国产网站| 国内精品视频在线| 成人黄色生活片| 国产欧美一区二区三区久久人妖| 国产视频精品在线| 国产精品永久免费观看| 国产精品视频男人的天堂| 久久国产精品影片| 亚洲成人激情在线观看|