在MySQL
中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(
也可能是多个,取决于存储引擎)
。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。这说明在大多数Unix
中数据库名和表名对大小写敏感,而在Windows
中对大小写不敏感。一个显著的例外情况是Mac
OS
X
,它基于Unix
但使用默认文件系统类型(HFS+)
,对大小写不敏感。然而,Mac
OS
X
也支持UFS
卷,该卷对大小写敏感,就像Unix
一样。参见1.8.4节,“MySQL对标准SQL的扩展”
。
注释:
尽管在某些平台中数据库名和表名对大小写不敏感,不应在同一查询中使用不同的大小写来引用给定的数据库或表。下面的查询不会工作,因为它同时引用了表my_tables
和as
MY_tables
:
mysql>
SELECT * FROM my_table WHERE MY_TABLE.col=1;
列、索引、存储子程序和触发器名在任何平台上对大小写不敏感,列的别名也不敏感。
默认情况,表别名在Unix
中对大小写敏感,但在Windows
或Mac
OS
X
中对大小写不敏感。下面的查询在Unix
中不会工作,因为它同时引用了别名a
和A
:
mysql>
SELECT col_name
FROM tbl_name
AS a
->
WHERE a.col_name
= 1 OR A.col_name
= 2;
然而,该查询在Windows
中是可以的。要想避免出现差别,最好采用一致的转换,例如总是用小写创建并引用数据库名和表名。在大多数移植和使用中建议使用该转换。
在MySQL
中如何在硬盘上保存和使用表名和数据库名由lower_case_tables_name
系统变量确定,可以在启动mysqld
时设置。lower_case_tables_name
可以采用下面的任一值:
值
|
含义
|
0
|
使用CREATE TABLE
或CREATE
DATABASE
语句指定的大写和小写在硬盘上保存表名和数据库名。名称比较对大小写敏感。在Unix
系统中的默认设置即如此。请注意如果在大小写不敏感的文件系统上用--lower-case-table-names=0
强制设为0
,并且使用不同的大小写访问MyISAM
表名,会导致索引破坏。
|
1
|
表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL
将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows
和Mac
OS X
系统中的默认值。
|
2
|
表名和数据库名在硬盘上使用CREATE TABLE
或CREATE
DATABASE
语句指定的大小写进行保存,但MySQL
将它们转换为小写以便查找。名称比较对大小写敏感。注
释:
只
在对大小写不敏感的文件系统上适用!
InnoDB
表名以小写保存,例如lower_case_tables_name=1
。
|
在Windows
和Mac OS
X
中,lower_case_tables_name
的
默认值是1
。
如果只在一个平台上使用MySQL
,通常不需要更改lower_case_tables_name
变量。然而,如果你想要在对大小写敏感不同的文件系统的平台之间转移表,会遇到困难。例如,在Unix
中,my_tables
和MY_tables
是两个不同的表,但在Windows
中,这两个表名相同。要想避免由于数据库或表名的大小写造成的数据转移问题,可使用两个选项:
·
在任何系统中可以使用lower_case_tables_name=1
。使用该选项的不利之处是当使用SHOW
TABLES
或SHOW DATABASES
时,看不出名字原来是用大写还是小写。
·
在Unix
中使用lower_case_tables_name=0
,在Windows
中使用lower_case_tables_name=2
。这样了可以保留数据库名和表名的大小写。不利之处是必须确保在Windows
中查询总是用正确大小写引用数据库名和表名。如果将查询转移到Unix
中,由于在Unix
中大小写很重要,如果大小写不正确,它们不工作。
例外
:如果你正使用InnoDB
表,在任何平台上均应将lower_case_tables_name
设置为1
,以强制将名转换为小写。
请注意在Unix
中将lower_case_tables_name
设置为1
之前,重启mysqld
之前,必须先将旧的数据库名和表名转换为小写
相关推荐
LINUX系统下mysql的大小写区分问题.docx
今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?
MySql查询不区分大小写解决方案(两种)MySQL中查询的有关英文字母大小写问题的分析Mysql大小写敏感的问题Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误教你如何在windows与linux系统中设置...
mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中: 1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都...
今天在开发中遇到这么个问题,将连接的...而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不区分大小写的,后来查资料才发现,在Linux系统中MySQL默认是严格区分大小 写的,可以在配置文件中添加配置,
说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例: aliyun _ admin , rdc _ config , level 3_
说明:MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库 名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例:health_user,rdc_config,level3_name 反例:HealthUser...
Linux下安装mysql-8.0.21,全过程详细记录步骤,特别是是否区分大小写。
flowable 6.3.0 ZIP包,包含了文档、lib包,5个War包flowable-admin.war,flowable-idm.war,flowable-modeler.war,flowable-rest.war,flowable-task.war
【2】linux的mysql区分大小写,数据库中的表名与输入的sql语句中的使用的表名大小写不一致导致的 【3】数据库操作时,误删mysql的文件导致(常见于数据库升级或迁移) 【4】在编译安装mysql时,没有指定innodb存储引擎...
同时,名称是区分大小写的。为了提高可读性,通常使用小写字母,并用下划线或连字符分隔单词。此外,变量的命名也需遵循类似规则,即以字母或下划线开头,不能包含空格和特殊字符。这些命名规则确保了Linux系统中的...
同时,名称是区分大小写的。为了提高可读性,通常使用小写字母,并用下划线或连字符分隔单词。此外,变量的命名也需遵循类似规则,即以字母或下划线开头,不能包含空格和特殊字符。这些命名规则确保了Linux系统中的...
同时,名称是区分大小写的。为了提高可读性,通常使用小写字母,并用下划线或连字符分隔单词。此外,变量的命名也需遵循类似规则,即以字母或下划线开头,不能包含空格和特殊字符。这些命名规则确保了Linux系统中的...
c)字段名显示区分大小写,但实际使⽤用不区分,即不可以建立两个名字一样但大小写不一样的字段。 d)为了统一规范, 库名、表名、字段名使用小写字母。 2.库名、表名、字段名禁止超过32个字符。 库名、表名、
区分大小写) 所有数据库对象名称禁止使用 所有数据库对象名称必须要见名识义,并且最好不超过32个字符 临时表:以 tmp 为前缀并以日期为后缀 备份表:以 bak 为前缀并以日期为后缀 所有存储相同数据的
Invoke-Locate支持区分大小写和不区分大小写的搜索,并且默认情况下不区分大小写。 定位搜索是按用户进行的,并且数据库安全地存储在您的主目录中。 您可以搜索系统文件和您自己的主目录,但无
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...
SSM的学习例子,使用Intellij进行的,spring,mybatis,...补充:MySQL在windows下不区分大小写,但是在Linux默认是区分大小写。所以之前会出现在本地项目中对数据库的操作没有问题,但是部署到服务器(CentOS)之后就出