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=testpass=test123host=localhost#注释2:选择需要处理的DB for old_db in db1 db2 db3doecho $old_db beginnew_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_tablesdo 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" doneecho $old_db enddone
操作完可以自行选择删除旧库。
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
来源地址:https://blog.csdn.net/wen3qin/article/details/127645498
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341