mysql大小写敏感配置
2021/9/28 19:11:01
本文主要是介绍mysql大小写敏感配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mysql大小写敏感配置相关的两个参数,lower_case_file_system 和 lower_case_table_names。
查看当前mysql的大小写敏感配置
show global variables like '%lower_case%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | ON | | lower_case_table_names | 0 | +------------------------+-------+ # lower_case_file_system # 表示当前系统文件是否大小写敏感,只读参数,无法修改。 # ON 大小写不敏感 # OFF 大小写敏感 # lower_case_table_names # 表示表名是否大小写敏感,可以修改。 # lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。 # lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
设置lower_case_table_names的值
# 打开my.cnf文件,加入以下语句后重启。 lower_case_table_names = 0 或 lower_case_table_names = 1
测试lower_case_table_names为0和1时的不同情况
创建表 user
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
设置lower_case_table_names = 0
# 表名与创建时大小写一致 select count(*) from user; +----------+ | count(*) | +----------+ | 0 | +----------+ # 表名与创建时大小写不一致 select count(*) from User; ERROR 1146 (42S02): Table 'user.User' doesn't exist
lower_case_table_names=0时,表名大小写敏感。
设置lower_case_table_names = 1
表名与创建时大小写一致select count(*) from user; +----------+ | count(*) | +----------+ | 0 | +----------+
表名与创建时大小写不一致
select count(*) from User; +----------+ | count(*) | +----------+ | 0 | +----------+
lower_case_table_names=1时,表名大小写不敏感
设置lower_case_table_names=1时,原来在lower_case_table_names=0时创建的表提示不存在的解决方法
# 在lower_case_table_names=0时使用大小写混用创建表名, # 再设置lower_case_table_names=1后,原创建的表使用时会提示不存在。
首先设置lower_case_table_names=0
创建表 User(大小写混用)CREATE TABLE `User` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; show tables; +----------------+ | Tables_in_user | +----------------+ | User | +----------------+
再设置lower_case_table_names=1
执行查询,不管表名是大写还是小写,都提示表不存在select * from User; ERROR 1146 (42S02): Table 'user.user' doesn't exist select * from user; ERROR 1146 (42S02): Table 'user.user' doesn't exist select * from USER; ERROR 1146 (42S02): Table 'user.user' doesn't exist
这篇关于mysql大小写敏感配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享