【问题标题】:lower_case_table_names setting in Amazon RDSAmazon RDS 中的 lower_case_table_names 设置
【发布时间】:2016-03-16 04:15:43
【问题描述】:

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

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

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

有什么解决办法吗?我想设置 lower_case_table_names=1 这样新数据库就不会出现问题。

提前致谢!

【问题讨论】:

    标签: php mysql amazon-rds


    【解决方案1】:

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

    【讨论】:

    • 数据库很大。客户不想关闭网站,:-(
    • 很明显,在 AWS RDS 上,您必须创建一个 "parameter group",然后修改您的实例以使用它,最后重新启动您的实例。请注意,删除旧的以案例命名的表 BEFORE 可能是一个想法,因为在此更改之后您可能无法访问它们。当然,不要对生产数据这样做:)
    【解决方案2】:

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

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

    希望对你有帮助:)

    【讨论】:

    • 100% 完美,@hung-vu。谢谢!我说的是(pending-reboot),就像你说的那样,在Parameter group下的配置部分。阅读this 后,我按照说明重新启动。
    【解决方案3】:

    如果您设置lower_case_table_names=1 参数,数据库将从那时起将所有新创建的表名转换为小写。它还会在查找之前将所有数据库查询中的表名转换为小写。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 2014-03-17
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多