关于mysql的lower_case_table_names引发的思考

lower_case_table_names设置大小写敏感的三个值0、1、2的区别?

lower_case_table_names参数详解

1.参数说明:

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

unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2

2.查看方法:

# 进入mysql命令行 执行以下任一语句查看:show variables like 'lower_case_table_names';select @@lower_case_table_names;

3.更改方法:

更改数据库参数文件 my.cnf

在mysqld下 添加或修改 lower_case_table_names = 1

之后重启数据库

4.现实情况修改 注意事项:

因目前MySQL安装在 Linux 系统上较多 初始化时采取了默认的lower_case_table_names值 即区分大小写,后续可能会造成同一实例大小写库表都存在的情况,调用时还要注意大小写。

这时 更改步骤如下:

1.核实实例中是否存在大写的库及表

2.将大写的库名及表名改为小写

更改库名可参考 : MySQL数据库改名的三种方法

更改表名:rename table TEST_TB to test_tb;

3.设置lower_case_table_names = 1

4.重启数据库

在Ubuntu上设置MySQLlower_case_table_names参数无效可能是由于以下几个原因: 1. 参数设置错误:请确保在MySQL配置文件中正确设置了lower_case_table_names参数。可以通过编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件来修改参数值。确保在[mysqld]部分添加或修改lower_case_table_names = 1,并重新启动MySQL服务。 2. 配置文件位置错误:在某些情况下,MySQL的配置文件可能位于不同的位置。可以通过运行以下命令来查找配置文件的位置:sudo find / -name "my.cnf"。然后在找到的配置文件中进行相应的修改。 3. 参数冲突:如果在MySQL配置文件中同时设置了lower_case_table_names参数和其他与大小写相关的参数(如lower_case_file_system),可能会导致参数无效。请确保只设置lower_case_table_names参数,并将其他相关参数注释掉或删除。 4. 参数生效范围:lower_case_table_names参数只对新创建的表有效,对于已存在的表可能不会生效。如果需要将已存在的表名转换为小写,可以使用RENAME TABLE语句进行修改。 5. 数据库引擎限制:某些数据库引擎(如InnoDB)可能对lower_case_table_names参数有限制。请确保使用的数据库引擎支持该参数,并且已正确配置。 如果以上方法都无效,您可以尝试重新安装MySQL,并在安装过程中正确设置lower_case_table_names参数。另外,您还可以查看MySQL的错误日志文件(通常位于/var/log/mysql/error.log),以获取更多关于参数设置无效的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值