【windows】MYSQL对表名大小写敏感

本文详细介绍了在某市出现的MySQL功能异常问题,深入分析了原因在于表名大小写敏感设置,并提供了具体的解决方案,包括检测lower_case_table_names值、修改my.ini配置文件及重启数据库步骤。

今天遇到一个贼坑的事情,某个功能在各个地区,都没问题,唯独在某市出现了问题,删除删不了,查询查不了!

后来发现竟然是mysql对表名大小写敏感,日了狗了,windows默认对大小写不敏感的啊!

于是赶紧去检查下lower_case_table_names值,果然,他被设为了lower_case_table_names=0。

如何检测lower_case_table_names?

1、执行如下SQL:show variables like '%lower_case_table_names%';

2、如果为0,打开my.ini文件(my.ini文件在mysql安装目录,例如我的是:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini)

搜索lower_case_table_names,将其改为lower_case_table_names=1

3、重启数据库

 

PS:

lower_case_table_names=0 表示对表名大小写敏感

lower_case_table_names=1 表示对大小写不敏感

windows默认为1。

 

拓展下:

LINUX:

一、编辑配置文件

 vi /etc/my.cnf
在[mysqld]下面添加lower_case_table_names=1

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
lower_case_table_names=1

二、重新启动数据库

 systemctl restart mariadb
 

 

 

修改后,启动遇到问题,可参考如下文章:

https://blog.youkuaiyun.com/guanghuichenshao/article/details/86158737

<think>好的,我现在需要解决用户关于MySQL大小写敏感设置的问题。用户之前已经提过相关问题,现在需要更详细的设置方法。让我先回顾之前的对话和提供的引用内容。用户在上一次对话中提到了修改lower_case_table_names参数,但可能遇到了一些问题,比如数据丢失或配置不生效。现在用户明确询问如何控制大小写敏感度,需要详细的步骤和注意事项。根据引用[2]和[4],lower_case_table_names参数是关键,不同操作系统的默认值不同。在Unix上是0,Windows1,macOS是2。设置这个参数需要修改my.cnf文件并重启MySQL服务。但需要注意,在MySQL8.0中,修改这个参数可能需要重新初始化数据库,尤其是在已经存在数据的情况下,这可能会导致数据丢失,如引用[4]提到的步骤中有删除数据目录的操作。另外,引用[1]和[3]提到,除了系统参数,字符集和排序规则也会影响字段内容的大小写敏感,但和数据库主要受lower_case_table_names控制。用户的问题集中在上,所以需要重点讲解这个参数。用户可能遇到的问题包括:如何在不丢失数据的情况下修改参数,不同操作系统的差异,以及MySQL版本的限制(如8.0)。需要分步骤说明设置方法,并强调注意事项,比如备份数据、版本兼容性等。现在需要整理回答的结构:首先说明参数的作用,然后详细步骤,包括停止服务、修改配置文件、初始化数据(如果需要)、重启服务。同时要加入注意事项,如不同操作系统的默认值、MySQL版本的限制、数据备份的重要性。还需要生成相关问题,可能涉及如何验证设置生效、处理数据迁移、不同字符集的影响等。确保引用正确,如引用[2]和[4]关于lower_case_table_names设置,引用[3]关于字符集和排序规则。最后,检查是否需要数学公式,但此问题可能不需要,除非涉及性能分析,但用户的问题主要是配置方法,所以可能不需要。不过之前的回答中有数学公式的例子,但用户这次的问题可能不适用,所以可以忽略,除非必要。 总结回答要点:1.参数lower_case_table_names的作用和取值。 2.设置步骤:停止服务、修改配置文件、初始化数据(视情况)、重启。3.注意事项:操作系统差异、MySQL版本限制、数据备份。 4.验证方法:SHOW VARIABLES命令。5.相关问题生成,如不丢失数据修改参数、不同模式的影响等。 需要确保回答清晰,步骤正确,并引用相关文献,如引用[2][4]说明参数设置,引用[1]说明大小写规则,引用[3]关于字符集的影响。同时,避免之前提到的错误,如MySQL8.0的限制,需要提醒用户注意。</think>### MySQL大小写敏感设置方法 --- #### **核心参数:`lower_case_table_names`** 该参数控制数据库和在存储及查询时的敏感度规则[^2][^4],取值范围如下: - **0**:区分大小写(Unix系统默认值) - **1**:不区分大小写Windows系统默认值) - **2**:按文件大小写存储,但查询时转换为小写(macOS默认值) --- #### **配置步骤** 1. **停止MySQL服务**: ```bash sudo systemctl stop mysql # Linux系统 net stop mysql # Windows系统 ``` 2. **修改配置文件**: 打开MySQL配置文件(路径参考): - Linux: `/etc/mysql/my.cnf` - Windows: `C:\ProgramData\MySQL\MySQL Server X.X\my.ini` 在`[mysqld]`段添加参数: ```ini [mysqld] lower_case_table_names=1 # 设为1示不区分大小写[^4] ``` 3. **处理数据目录(仅首次配置或需要重初始化时)**: ```bash sudo rm -rf /var/lib/mysql/* # 删除旧数据(操作前必须备份!) sudo mysqld --initialize --user=mysql # 重新初始化[^4] ``` 4. **重启服务并验证**: ```bash sudo systemctl start mysql # Linux mysql -u root -p SHOW VARIABLES LIKE 'lower_case%'; # 应显示值为1[^2] ``` --- #### **注意事项** 1. **操作系统差异**: - Unix系统默认区分大小写(值为0),Windows默认不区分(值为1)[^2] - 跨平台迁移时需统一配置 2. **MySQL版本限制**: - **MySQL 8.0及以上**要求初始化时设置`lower_case_table_names`,已有数据的实例修改需重初始化[^4] 3. **字符集影响**: - 字段内容的大小写敏感度由字符集排序规则决定(如`utf8_general_ci`不区分,`utf8_bin`区分)[^3] --- #### **验证配置生效** ```sql -- 创建测试 CREATE TABLE TestCase (id INT); -- 尝试查询(应返回相同结果) SELECT * FROM testcase; SELECT * FROM TESTCASE; ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值