MySQL数据库名、表名大小写问题
时间:2022-03-14 04:01
在MySQL中,数据库对应操作系统数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名以及表名的大小写敏感性。这说明在大多数Unix中数据库名和表名对大小写敏感,而在windows中对大小写不敏感。
列、索引、存储子程序和触发器名在任何平台对大小写不敏感,列的别名也不敏感。
对于类Unix系统:
If set to 0, table names are stored as specified and comparisons are case sensitive.
If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.
If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases.
Unix平台上默认lower_case_tables_name=0
MySQL在查询或者字符串比较的时候,也是大小写不敏感的。可以指定 BINARY关键字以区分大小写。
如果只在一个平台上使用MySQL,通常不需要更改lower_case_tables_name 变量。然而,如果你想要在对大小写敏感不同的文件系统的平台之间转移表,会遇到问题。
命名规范
为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库/表/列的时候全部采用小写字母+下划线形式,不使用任何大写字母。
如果你使用InnoDB引擎,在任何平台上均应用lower_case_tables_name=1,以强制将名转换为小写。请注意在Unix系统中将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将原来的数据库名以及表名全部转换为小写。
本文出自 “” 博客,请务必保留此出处