国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數據庫 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
av手机天堂| 国产色a在线| 国产黄a三级三级三级av在线看 | 国产亚洲精品久久久久久移动网络 | 九九免费视频| 中文在线观看视频| 秋霞av在线| 国产人成网在线播放va免费| 国产欧美日韩第一页| 国产视频二区三区| 国产成在线观看免费视频| 国产成人亚洲欧美电影| 日本视频三区| 国产不卡视频| 国产女人在线观看| 国产a级网站| 国产在线二区| 日本在线观看| 2019中文字幕视频| 天堂在线视频| www.狠狠操.com| 国产黄大片在线观看画质优化| h视频在线网站| 伊人影院蕉久影院在线播放| 国产午夜精品一区理论片| 欧美亚洲另类在线观看| 91福利在线视频| 成人欧美亚洲| gogo高清在线播放免费| 精品精品导航| 国精一区二区三区| 天天草天天操| 小说区乱图片区| aaa大片在线观看| 18av在线播放| 91福利在线视频| 国产国产人免费人成免费视频| 国产农村av| 丁香综合在线| 国产理论电影在线观看| 国产毛片毛片| 国产午夜三区视频在线| 国产黄视频在线观看| 国产91久久久久蜜臀青青天草二| 午夜伦全在线观看| 国产在线视频精品视频免费看| 欧美日韩**字幕一区| 欧美xxxx黑人又粗又长| 免费在线你懂的| 天堂资源在线中文| 国产视频一二三区| 伊人春色在线| 久草网在线视频| 天天操天天操一操| √天堂资源中文www| 亚洲wwwwww| 狠狠操狠狠色| 国产高清在线看| 日本在线免费中文字幕| 天堂在线中文资源| 国产欧美日韩专区| 国产成人福利| 久久精品视频观看| 精品一区二区三区在线成人| av资源网站在线观看| 久久久久久久久免费视频| 国产午夜三区视频在线| 伊人免费在线| 国产一卡2卡3卡免费网站| 国产成人高清精品| 国产在线三区| 午夜在线不卡| 国产精品久久久久一区二区国产| 操人视频91| 精品成人一区二区三区免费视频| 欧美色欧美亚洲另类二区精品| 国产青青草在线| 国产九色在线| 豆国产97在线|亚洲| baoyu777.永久免费视频| 国产成人福利| 国产一级电影网| 九九热在线视频观看| 依依成人在线| 国产精品欧美色图| 国产乱视频在线观看播放| h网站免费在线观看| 一二三四区在线观看| 国产情侣高潮对白| 国产免费黄网站| 免费高清视频日韩| eeuss影院在线观看第一页| 在线一区观看| 伊人福利在线| 精品视频vs精品视频| 国产精品伦一区二区三区级视频频| 九九久久久2| 国产中文字幕第一页| 久久亚洲国产成人亚| 久久久久久久久免费视频| 香蕉视频网站在线观看| 尤物视频在线观看视频| 中文日本在线观看| 日本一本久久| 黄色国产网站在线观看| 欧美精品se| 激情四房婷婷| 午夜视频免费在线观看| 成人免费一区二区三区视频网站| 福利视频在线看| 国产精品被窝福利一区| 18av在线播放| 白浆爆出在线观看| 国产免费av网站| 国产福利电影在线| www.色婷婷| 超碰免费97在线观看| 最好看更新中文字幕| 91最新在线| 成年女人在线视频| 国产日韩网站| 在线中文字幕资源| 九九在线视频| 国产高清大尺度一区二区不卡| 一区二区三区四区在线免费视频| 超碰免费在线播放| 国产成人亚洲欧美电影| 久久国产情侣| 精品国产高清自在线一区二区三区 | 尤物免费看在线视频| 国产成人va亚洲电影| 天海翼中文字幕| 国产黄色片大全| 免费久久网站| √8天堂资源地址中文在线| 欧美亚洲另类在线观看| 国产经典三级在线| 国产理论电影在线| 青草视频在线播放| av亚洲在线| 97国产视频| 国产黄在线看| 国产日本在线| 国产理论片免费观看| 日本在线观看网站| 一级二级三级在线观看| 精品视频二区| 精灵使的剑舞无删减版在线观看| 国产一区二区三区四区尤物| 亚洲久草视频| 在线国产一区二区三区| 国产高清一级片| 国产精品视频流白浆免费视频| 九九热在线视频免费观看| eeuss影院www在线播放| 亚洲精品天堂在线观看| av福利在线| 中文在线视频观看| 9色在线视频网站| 2019中文字幕视频| 精品av中文字幕在线毛片| 国产精品国精产品一二| 国产区在线观看| 国产精品被窝福利一区| 午夜视频在线| 国产福利片在线| 在线免费观看黄色片| 亚洲国产精品区| 免费观看一二区视频网站| 超碰国产在线| 国产伦精品一区二区三区高清版禁| 超碰国产在线| 中文字幕不卡免费视频| 国产叼嘿网站免费观看不用充会员| 2019中文字幕视频| 色吊丝av中文字幕| 国产蜜臀av在线播放| √天堂资源中文www| 本道综合精品| 福利视频网站导航| 国产欧美日韩第一页| av在线播放av| 国产区成人精品视频| 亚洲成人福利| 国产三级在线免费| www.毛片| 精品全国在线一区二区| 超碰在线人人| 精品美女调教视频| 天堂在线免费观看| 牛牛精品视频在线| 91欧美在线视频| 91超碰在线免费| 牛牛热在线视频| 2021av天天| 国产视频二区三区| 久久久久久久久亚洲精品| av手机免费观看| 91在线高清| 2018狠狠干|