MySQL--区分表名大小写

============================================================================

在MySQL中,可以通过lower_case_table_names参数来设置是否区分表名大小写问题,参数有效取值为:0,1,2:
0表示,表在文件系统存储的时候,对应的文件名是按建表时指定的大小写存的,MySQL 内部对表名的比较也是区分大小写的;
1表示,表在文件系统存储的时候,对应的文件名都小写的,MySQL 内部对表名的比较是转成小写的,即不区分大小写;
2表示,表在文件系统存储的时候,对应的文件名是按建表时指定的大小写存的,但是 MySQL 内部对表名的比较是转成小写的,即不区分大小写。

由于MySQL中的表和操作系统中的文件对应,而不同操作系统下对文件名的处理不一样,比如在Linux系统下文件名区分大小写,而在Windows系统下不区分大小写,因此在设置lower_case_table_names参数时需要根据操作系统来决定。

当参数设置为0时,适合区分大小写的系统。
当参数设置为1时,适合所有系统。
当参数设置为2时,适合不区分大小写的系统。

修改lower_case_table_names参数可能会导致后续DDL操作失败,需谨慎操作,最好在初始化数据库时就确定好是否需要区分大小写。

https://yq.aliyun.com/articles/50846
https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html?spm=5176.100239.blogcont50846.6.jyqeFt#sysvar_lower_case_table_names

原文地址:https://www.cnblogs.com/gaogao67/p/10390646.html

时间: 2024-10-30 01:39:53

MySQL--区分表名大小写的相关文章

linux mysql不区分表名大小写配置

原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lower_case_table_names=1(值为0时区分大小写)3.重启MySQL即可: MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的:1)数据库名与表名是严格区分大小写的:2)表的别名是严格区分大小写的:3)列名与列的别名在所有的情况下均是忽略大小写的:4)变量名也是严格区分

设置centos7中的mysql5.7不区分表名大小写有关操作

1.#which mysqld          //查看mysql的命令路径 /usr/sbin/mysqld 2.#/usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'       //查看mysql读取的默认配置文件位置 /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf (多个配置文件,前面的文件不存在才会读取后面的) 3.#vim /etc/my.cnf

Linux系统下不让MySQL区分表名的大小写的解决办法

问题描述: 今天将某项目数据库移植到liunix服务器上,结果出现无法找到表的错误,查询数据库,表确实是存在的.经过分析比较,发现是表名大小写问题导致. 问题分析: MySQL数据库的表名在Linux系统下是严格区分大小写的,在Windows系统下开发的程序移植到Linux系统下,如果程序中SQL语句没有严格按照大小写访问数据库表,就可能会出现找不到表的错误. 解决办法: 修改MySQL的配置文件my.cnf,在[mysqld]部分添加如下配置选项lower_case_table_names =

设置Linux中的Mysql不区分表名大小写

1. MySQL数据库的表名在Linux系统下是严格区分大小写的,在Windows系统下开发的程序移植到Linux系统下,如果程序中SQL语句没有严格按照大小写访问数据库表,就可能会出现找不到表的错误. 2. 解决办法是:修改MySQL的配置文件my.cnf,在[mysqld]部分添加如下配置选项lower_case_table_names = 1,重启MySQL服务即可. 3. 但这个办法治标不治本,根本的解决办法是遵从跨平台开发的好的实践,例如SQL语句中的库名.表名.字段名等等要严格区分大

windows下mysql数据库表名大小写不敏感

最近新入职,领导让做个小功能先练练手.是一个添加分类的功能,有添加和列表,很简单.功能做完后提交,结果在线上出现一个大大的500. 但是我再本地环境下是正常的,我以为可能是php的版本不一致导致的问题,就仔细看代码,看看有没有什么不合理的地方,然后在提交,还是500.然后又看,又提,依然是500.很不解啊,只有问领导了,领导说,是线上mysql字段设置了大小写敏感,遂改之,结果还是500.领导再一看,我靠了,表名应该是首字母大写的,但是我本地是小写. 大坑啊.原来开发创建的表都是小写的,所以原来

docker mysql 数据持久化到本地、设置不区别表名大小写

Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql 还可以指定配置文件 docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cn

Mysql区分某个字段大小写解决方案

今天生产环境mysql遇到了一个问题,某个应用在生产环境中是区分大写的,但是mysql中是不区分大小写的,这就坑爹了,查出来的数据有两条,程序就报错了说它不知所措了,咋办...咋办...百度后查到了解决办法,如下: mysql默认是区分大小写的,如果做过某些配置,那么就不区分大小了,可以通过show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分. Linux下的MYSQL默认是要区分表名大小写的 ,而在w

linux下mysql表名大小写问题

近日,新mysql实例导入sql数据时,发现比老的mysql多了100+张表,最终发现是mysql表名大小写所致:很简单的问题却耽误很长时间,在此记录一下,以防再犯同样的错误: 1.Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写:2.用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写:lower_case_table_names参数详解:l

mysql的表的大小写区分

在linux的环境下,在mysql的配置里会对大小写有一定的要求的.尤其是一些云平台提供的固定环境是配置好这些要求,所以需要对这些有一定的了解.(比如阿里云就会设定lower_case_table_names=1,具体分析在后面) 1.表名大小写 Linux默认情况下区分大小写(另外,MySQL在Windows下数据库名.表名.列名.别名都不区分大小写,即使设置lower_case_table_names=0,在查询时还是不会区分大小写.只是在导入导出时会对大小写有区别.原因是大小写的功能是在操