Amazon RDS中的lower_case_table_names设置

时间:2015-12-10 13:39:59

标签: php mysql amazon-rds

我们在Amazon RDS中有一个数据库实例,只有一个数据库。 (默认情况下,其lower_case_table_names = 0)。

现在我在同一个实例中创建了另一个数据库。 对于新站点,由于区分大小写的表名,其给定表未找到错误。

所以我在RDS中更改了该实例的lower_case_table_names = 1(因为不允许2)。 新站点开始工作但旧站点未找到错误表。

任何解决方案?我想设置lower_case_table_names = 1,因此新DB不会出现问题。

提前致谢!

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,默认情况下,当您使用AWS RDS创建新的MySQL实例时,它将使用default-parameter-group,问题是您无法更改此默认参数组中的任何参数。要更改参数值,您必须创建一个新参数组。在这里你是如何做到的:

  1. 在左侧面板上转到参数组>创建参数组>给出名称和描述>创建>搜索您想要的参数,在本例中为“lower_case_table_names”>编辑参数,将其更改为1>保存。
  2. 在左侧面板上转到Instances>在内容面板中选择Instance Action>修改>数据库选项>数据库参数组>选择所需的参数组>继续>重新启动实例>等几分钟然后一切都设置
  3. enter image description here

    enter image description here

    希望有所帮助:)

答案 1 :(得分:2)

通过设置lower_case_table_names=1进行配置后,尝试导出数据库并再次导入。

答案 2 :(得分:0)

如果设置lower_case_table_names=1参数,则DB将从该点开始将所有新创建的表名转换为小写。还将在查找之前将所有数据库查询中的表名转换为小写。

但是,如果在启用参数之前数据库中已经有一组表,则它们不会更改。由于查询已转换为小写,因此您的应用程序将告诉您“未找到表”,因为实际表是大写的,而查找则是小写的。

我可以按照以下步骤解决此问题。

  1. 在启用参数之前将所有数据库导出到文件reference
  2. (禁用该参数并重新启动服务器(如果已启用)
  3. 从数据库服务器删除所有数据库
  4. 启用参数
  5. 重新启动服务器以应用更改
  6. 导入导出的数据库

这将在导入时将所有新表名转换为小写。由于查找也以小写形式进行,因此不会有任何问题。