gpt4 book ai didi

mysql - 如何使用多个值设置 Amazon RDS SQL_MODE

转载 作者:可可西里 更新时间:2023-11-01 07:14:41 26 4
gpt4 key购买 nike

MySQL 允许在 my.cnf 文件中将参数 SQL_MODE 设置为多个值。我如何在 Amazon RDS 上执行相同的操作?

更新:这个问题已经解决了......见下文。

最佳答案

MySQL 允许在 my.cnf 文件中将参数 SQL_MODE 设置为多个值。但是,无论您使用他们基于浏览器的控制台还是他们的 CLI 工具,Amazon RDS 都只允许一个值。

对于无法将 SQL_MODE 设置为多个值的问题,我已经找到了一个(也许并不完美)解决方案。在下面的过程中,我展示了我的设置。您可以选择您认为与您的环境相关的任何值。

1) 在您的参数组中,设置 SQL_MODE = TRADITIONAL(或者哪个值是您的最高优先级)

2) 在您的参数组中,将 init_connect 设置为:SET SESSION sql_mode = 'TRADITIONAL,IGNORE_SPACE,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY'

现在,当客户端登录数据库时,他们的 session SQL_MODE 应该设置为由 init_connect 字符串传入的所有值。在我的例子中,这等同于:IGNORE_SPACE、ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION

警告:设置后编辑 init_connect 值涉及剪切-粘贴。但是,我发现在设置 init_connect 值后尝试删除它是一件很麻烦的事情,所以在使用它时要小心。麻烦吗?要在设置后删除 init_connect 值,我需要从头开始创建一个新的 parm 组,将除 init_connect 之外的所有值设置为原始 parm 组所具有的值,删除原始 parm 组,然后使用旧名称重命名新组。 Firefox 和 Chrome 都是如此。我也无法使用 CLI 工具 (aws rds modify-db-parameter-group) 删除该值。

虽然不是这篇文章的真正一部分,但如果有人回应如何删除/重置/清空 init_connect 而没有我上面描述的那种麻烦,那就太好了。

更新 1:

没关系。我发现 init_connect 设置(在 RDS 上)将无法在数据库重新启动后继续存在。因此,我上面提供的解决方案不起作用。

此外,由于无法通过控制台移除(删除)init_connect 设置(为什么不呢?),因此可以使用 aws rds reset-db-parameter-group CLI 命令来移除它而不是像我之前描述的那样重建整个参数组。

我对 Amazon RDS 感到非常失望:

  • 不允许多个 SQL_MODE 值。
  • 不允许我们通过控制台删除 init_connect 设置。

更新 2:

根据 Ross Scrivener 的回复,我测试了通过 AWS 控制台设置多个 SQL_MODE 值。我使用值 'TRADITIONAL,IGNORE_SPACE,ONLY_FULL_GROUP_BY'(无空格)。然后我重新启动了服务器两次,一切似乎都正常了。

感谢 Amazon 解决此问题,并感谢 Ross Scrivener 指出 AWS 的变化。

关于mysql - 如何使用多个值设置 Amazon RDS SQL_MODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com