好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 深入淺析MySQL 中 Identifier Case Sensitivity問題

深入淺析MySQL 中 Identifier Case Sensitivity問題

熱門標簽:外呼系統防封號違法嗎 電銷機器人針對的 400電話辦理都選易號網 寶應電信400電話辦理費用 高德地圖標注模式 如何在高德地圖標注新地址 外呼系統服務 湘潭電銷機器人咨詢電話 高德地圖標注中心個人注冊

在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 changed
mysql> 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 names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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>

可以看到此時不管是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大小寫存儲,大寫就大寫小寫就小寫,比較時統一轉小寫比較。

 

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

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問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • MySQL case when使用方法實例解析
  • mysql存儲過程之case語句用法實例詳解
  • MySQL排序中使用CASE WHEN的方法示例
  • mysql case when group by 實例詳解
  • 詳解Mysql case then使用
  • mysql update case 更新字段值不固定的操作

標簽:南充 蘭州 宿遷 佛山 馬鞍山 賀州 黃山 黔南

巨人網絡通訊聲明:本文標題《深入淺析MySQL 中 Identifier Case Sensitivity問題》,本文關鍵詞  深入,淺析,MySQL,中,Identifier,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入淺析MySQL 中 Identifier Case Sensitivity問題》相關的同類信息!
  • 本頁收集關于深入淺析MySQL 中 Identifier Case Sensitivity問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产边打电话边被躁120分钟| 又乱又黄又怀孕的小说| 一个人看的www在线观看视频| 国产AAA片无码不卡在线| 欧美18VideOSeX性欧美| 天天影视色香欲性综合网网站| 性故事之护士系列| 国产91热爆TS人妖月奴| 憋着晨尿做h失禁| 巨熟乳波霸若妻中文观看免费| 云之羽| 妙龄永久免费网站| 国产黄色一级网站| 欲成欢唐| 特大黑人巨交吊性XxXX| 日韩美女一区| 女m跪着趴着被主人调教| 日本熟妇毛茸茸xxxx| 国产成人精品微拍视频网址| 日本极度另类网站| 2828电视剧免费观看| 农村很黄的一级小说| 牲欲旺盛的女人高清在线| 日韩A片在线观看播放麻豆制作| 国产AV一区二区三区免费观看| 偷换粗大让娇妻爽| 99久免费精品视频在线观看2| 欧美性大战久久久久久片段| 丰满欧美放荡少妇在线| 日韩在线视频在线| 一区二区不卡| 变态将卵巢扩张h超重口| 99精品久久免费看蜜臀剧情介绍| 久久国产精品精品| 988好吊妞的视频这里只有精 | 一级做a爰片毛片A片的价格 | 日本免费黄网站| 国产日本精品| 国产人妻精品无码蜜汁| Ady映画防屏蔽AV最新官网| 亚洲成a人片在线观|