linux环境下mysql默认是区分表名大小写的

 在linux环境下,mysql默认表明是区分大小写的,我们可以查看全局变量发现:

mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)

 

lower_case_file_system  是一个只读参数,无法被修改,这个参数是用来告诉你在当前的系统平台下,是否对文件名大小写敏感。

 

 

lower_case_table_names: 此参数不可以动态修改,必须重启数据库


lower_case_table_names=0  表名存储为给定的大小和比较是区分大小写的

lower_case_table_names = 1  表名存储在磁盘是小写的,但是比较的时候是不区分大小写 
lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的

 

 

当在表明区分大小写的清空下我们混用大小写是会报错的,如下:

复制代码
mysql> show tables like 'black%';
+-------------------------+
| Tables_in_exam (black%) |
+-------------------------+
| black_unit              |
| blacklist               |
+-------------------------+
2 rows in set (0.00 sec)

mysql> select * from Blacklist;
ERROR 1146 (42S02): Table 'exam.Blacklist' doesn't exist
复制代码

 

 

 

解决办法:

   如果直接修改的话是会报错的,全局只读变量不可以修改。

mysql> set global lower_case_table_names=1;
ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable

 

 

 

最终解决办法:

1.   修改/etc/my.cnf, [mysqld]下面加一行:

lower_case_table_names=1

 

 

如下:

 

 2.重启mysql服务并且查看全局变量的值

mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

 

 

3.再次验证是否区分大小写:

mysql> select * from BLACKLIST;
Empty set (0.00 sec)

 

 

至此配置成功!

 

posted @   QiaoZhi  阅读(1466)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-07-17 log4j日志日记记录使用教程
点击右上角即可分享
微信分享提示