文档首页 > > 常见问题> 操作类问题> 源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表

源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表

分享
更新时间: 2019/09/12 GMT+08:00

场景描述

当源库参数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`
  • 对于库,则需要导出后,修改库名为小写,再进行导入。

修改库名或表名之后,需要维护权限的一致性,以免影响应用访问。

方法三

对象选择时不迁移该库或者该表。

分享:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区