ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

MySQL ÖÐ Identifier Case Sensitivity(Ò»)
2018-08-21 06:07:44 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:233´Î
Tags£ºMySQL Identifier Case Sensitivity

ÔÚ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 µÄ, µ«Ê¹ÓõÄÊDz»Çø·Ö´óСдµÄĬÈÏÎļþϵͳÀàÐÍ (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 TAB

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºÀûÓà Lambda ±í´ïʽʵÏÖ Java ÖÐ.. ÏÂһƪ£ºÔËÐÐ tail | grep ºó°´Ï Ctrl ¨..

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿