如何将 sql_mode 设置为值列表

How can I set sql_mode to a list of values

我正在尝试使用第二代云 sql 并想更改 sql 模式。在 UI 中,我只能将 sql_mode 设置为下拉列表中的一个值,而不是多个值(例如 "STRICT_MODE_TRANS,ALLOW_INVALID_DATES")。实现该目标的最佳方法是什么?

干杯, 安德烈斯

Google Cloud SQL 目前不支持此功能。您只能设置一个值。

我知道这个 post 已经 1 岁了,但是当我尝试将数据库从 MySQL 5.5 迁移到 sql_mode 时遇到问题时我偶然发现了这个=27=] SQL 使用 5.7。虽然我知道我们可以 SET GLOBAL sql_mode='' 到我们想要的任何有效值,但我花了几个小时才放弃并得出结论我们不能在 Google Cloud SQL.[=14= 上设置多个值]

Google 目前只允许在 sql_mode 标志上设置一个值。如果您的问题涉及删除 ONLY_FULL_GROUP_BY(OP 没有提及他为什么要自定义值)而不删除 sql_mode 的其余值,请在控制台中使用值 TRADITIONAL 或 gcloud sql instances patch <instance_name> --database-flags sql_mode=TRADITIONAL将从字符串的其余部分删除该值。

来自MySQL 5.7 Documentation

Before MySQL 5.7.4, and in MySQL 5.7.8 and later, TRADITIONAL is equivalent to STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.

我本来只会将其添加为上面的评论,但由于缺少积分,我还不能添加。

另一种可能的解决方案是将 sql_mode 设置为 HIGH_NOT_PRECEDENCE

一旦在 Cloud SQL 中设置,sql_mode 的字符串将变为:

HIGH_NOT_PRECEDENCE

所有其他标志均已删除!

我来自一个较旧的项目,因此此解决方案可能不适用于所有人,但似乎对我们来说效果很好,而且可以快速尝试。