赞
踩
我们有时会面临需要对mysql数据库设置为大小写不敏感,比较常见的例如:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,有时候在Linux上查询大写表名时就会出现找不到表的情况,比较常用的做法就是将Linux的Mysql设置为大小写不敏感。以下是操作步骤。
对于旧表,如果直接执行以下操作步骤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
操作完可以自行选择删除旧库。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。