MySQL表名、列名区分大小写详解

前言:出现的问题 在本地数据库上执行修改银行卡没有报错 但线上执行报错

发现是表找不到,发现表名不对应该是card_cardinfo,但本地上没有问题,能正常修改,然后在数据库里测试,发现本地库(win)下表名不区分大小写,线上(linux)区分

在刚开始使用mysql的时候,刚开始是想要区分列名大小写的问题,在网上看到很多办法,于是就
1、 linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
  2、 2、用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,
重启MYSQL服务,这时已设置成功:不区分表名的大小写; lower_case_table_names参数详解: 
lower_case_table_names = 0  
其中 0:区分大小写,1:不区分大小写 
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 
1、数据库名与表名是严格区分大小写的;
   2、表的别名是严格区分大小写的; 
   3、列名与列的别名在所有的情况下均是忽略大小写的;    4、变量名也是严格区分大小写的; 
MySQL在Windows下都不区分大小写。
在my.ini中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写; lower_case_table_names参数详解: 
lower_case_table_names = 0  
其中 0:区分大小写,1:不区分大小写
3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
 
A、 创建时设置: CREATE TABLE T(
A VARCHAR(10) BINARY  );  
B、 使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;  C、mysql table editor中直接勾选BINARY项。 
乱码解决,更详细的看下字符集设置这篇

时间: 2024-10-05 03:09:29

MySQL表名、列名区分大小写详解的相关文章

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

情景:公司近期在将数据库从Oracle转为Mysql,由于之前在Oracle中表名是不区分大小写,因此到Mysql中就出现了找不到表的问题,经上网查询,发现在linux下Mysql的表名是区分大小写的,但是有参数可以使其不区分大小写.具体操作如下: 一.linux中mysql大小写详情: 1.数据库名严格区分大小写 2.表名严格区分大小写的 3.表的别名严格区分大小写 4.变量名严格区分大小写 5.列名在所有的情况下均忽略大小写 6.列的别名在所有的情况下均忽略大小写 二.设置Mysql表名不区

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

1.Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写:2.用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写:lower_case_table_names参数详解:lower_case_table_names=0其中0:区分大小写,1:不区分大小写 MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的:1.数据库名与表名是严格

linux/centos下设置Mysql表名不区分大小写

情景:公司近期在将数据库从ORACLE转为MYSQL,由于之前在ORACLE中表名是不区分大小写,因此到mysql中就出现了找不到表的问题,经上网查询,发现在linux下mysql的表名是区分大小写的,但是有参数可以使其不区分大小写. 一.linux中mysql大小写详情: 1.数据库名严格区分大小写 2.表名严格区分大小写的 3.表的别名严格区分大小写 4.变量名严格区分大小写 5.列名在所有的情况下均忽略大小写 6.列的别名在所有的情况下均忽略大小写 二.添加参数使其不区分大小写 1.切换到

MySQL表名不区分大小写的设置方法

MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lower_case_table_names=13.重启MySQL即可: 其中 lower_case_table_names=1 参数缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0,因此在window中不会遇到的问题,一旦一直到linux就会出问题的原因(尤其在mysql对表起名时是无法用大写字母的,而

知识点:MySQL表名不区分大小写的设置方法

在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大小写不一致造成的. mysql在windows系统下安装好后,默认是对表名大小写不敏感的,但是在linux下,一些系统需要手动设置. 用root登录,打开并修改 /etc/my.cnf:在[mysqld]节点下,加入一行: lower_case_table_names=1. 重启mysql服务 service mysqld restart 或 /etc/inint.d/mysql

linux系统下MySQL表名区分大小写问题

问题如下: 比如上图中的PERSON表,查询SQL语句中如果表名是小写,就会报错说person表不存在. 因为Linux环境下的MySQL数据库的表名默认是区分大小写的,可以查看Linux上的MySQL的配置文件/etc/my.cnf: [[email protected]_219_131_centos tomcat7]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=m

mysql数据库表间内外链接详解

1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:select table1.column,table2.column from table1 [inner | left | right | full ] join table2 ontable1.column1 = table2.column2; inner join 表示内连接: left jo

让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)

把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错: Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist [See nested exceptio

mysql表名区分大小写问题

mysql表名区分大小写问题 查看mysql数据库大小写敏感参数 1.1. show variables like 'lower%';'' 参数说明 lower_case_table_names: 此参数不可以动态修改,必须重启数据库 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写 lower_case_table_names = 0 表名存储为给定的大小和比较是区分大小写的 1.2 . 特别注意 需要注意的是,当 lower_case