源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表
场景描述
当源库参数lower_case_table_names=1时,无法迁移包含大写字母的库或者表。
问题分析
当源库的lower_case_table_names 参数值为1时,MySQL会将库名或者表名转换成小写再进行查找。若存在以大写字母形式创建的库或者表,那么在lower_case_table_names参数值为1的情况下,MySQL将无法找到这个库或表,报告查询失败。也就是说,若lower_case_table_names的参数值为1时,大写字母的库或表很可能是不可访问的。
解决方案
目前针对该情况,分别提供如下解决方案:
方法一
修改源库lower_case_table_names的参数值为0 (即大小写敏感),并且保证源库与目标库的该参数值一致。
方法二
若无法永久修改lower_case_table_names,可临时将源库lower_case_table_names修改为0,然后执行如下操作。
- 对于表,可以使用如下语句将表名转换为小写:
alter table `BigTab` rename to `bigtab`
- 对于库,则需要导出后,修改库名为小写,再进行导入。
修改库名或表名之后,需要维护权限的一致性,以免影响应用访问。
方法三
对象选择时不迁移该库或者该表。
实时迁移 所有常见问题
- 如何判断数据迁移任务可以停止
- MySQL迁移中Definer强制转化后如何维持原业务用户权限体系
- MySQL存储过程迁移上云后遇到调用权限的问题,如何解决
- 如何确保业务数据库的全部业务已经停止
- 迁移日志提示can not get agency token
- Oracle到MySQL迁移时,索引超长如何处理
- Oracle等异构数据库迁移到MySQL后的数据库排序规则为什么是utf8mb4_bin
- RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理
- 低版本迁移至MySQL 8.0,应该注意哪些问题
- MongoDB数据库迁移过程中,源数据库出现内存溢出(OOM)是什么原因
- 如何关闭集合均衡器Balancer
- 如何批量导出、导入事件(event)和触发器(trigger)
- 源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表
- 分片集群MongoDB迁移前清除孤儿文档
- MySQL账号迁移后权限显示多了反斜杠“\”
more