mysql如何修改为大小写不敏感?

我们有时会面临需要对mysql数据库设置为大小写不敏感,比较常见的例如:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,有时候在Linux上查询大写表名时就会出现找不到表的情况,比较常用的做法就是将Linux的Mysql设置为大小写不敏感。以下是操作步骤。

1.处理包含大写字母的旧库

对于旧表,如果直接执行以下操作步骤2,是不能生效的。所以我们需要首先对旧表进行处理。处理方式是将包含大写字母的库名的数据库,统一修改为只有小写字母。而数据库是不能直接重命名的,处理方式有两种,一种是导出sql脚本后,创建新库后再到新库执行脚本完成导入;这里主要介绍第二种rename的方式:
rename table old_db.tb to new_db.tb;

这里写了一个脚本,批量执行,提供选择。
使用时,请自行替换数据库账号、密码、主机信息,以及对应需要迁移的数据库,见注释1和注释2

#!/bin/bash

#注释1:填写数据库信息
user=test
pass=test123
host=localhost

#注释2:选择需要处理的DB<db1 db2 db3>
for old_db in db1 db2 db3
do
		echo $old_db begin
new_db=$(echo $old_db | tr '[A-Z]' '[a-z]')

mysql -u$user -p$pass -h$host -e "create database if not exists $new_db;"

old_tables=$(mysql -u$user -p$pass -h$host -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='$old_db'")

for old_table in $old_tables
		do
    new_table=$(echo $old_table | tr '[A-Z]' '[a-z]')
    #echo $old_table 'to' $new_table
    mysql -u$user -p$pass -h$host -e "rename table $old_db.$old_table to $new_db.$new_table"    
		done
		echo $old_db end
done

操作完可以自行选择删除旧库。

2.设置大小写不敏感
mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

设置大小写不敏感的处理方式就是修改大小写敏感的变量lower_case_table_names,将它设置为忽略大小写,即:lower_case_table_names=1即可。我们可以找到相应操作系统环境下的my.cnf文件进行修改,修改后重启生效。

至此所有操作完毕,可以继续愉快的使用了。

参考:

设置MySQL数据库不区分大小写:https://cloud.tencent.com/developer/article/1455866
如何修改MySQL数据库名称:https://zhuanlan.zhihu.com/p/264878599

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电商架构修炼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值