Google Cloud SQL / mysql 谁是对的?

问题描述 投票:0回答:1

我从一家开发公司订购了定制 ERP 应用程序开发(不是很复杂)。我希望它在 GCP 上运行(用于 PHP 代码 /yii/ 的 Cloud Run、用于 MySQL 的 Cloud SQL、用于文件的 Cloud Storage)。

DevOps 说:在 Google Cloud SQL 中,不可能禁用 ONLY_FULL_GROUP_BY,甚至可以通过一些不建议的“hack”来实现。

开发者:开发者说他们需要禁用ONLY_FULL_GROUP_BY。 (该公司仅针对linux或windows服务器开发,如果他们更改它,它将无法在他们的windos服务器上运行,这是完全不同的环境,并且对于此请求需要完全不同的网络协议)

你能帮我看看谁是对的吗? (我不是程序员,但我想在稳定的环境中运行我的应用程序,例如 gcp)

我试图要求开发人员为他想要用于分组依据的选择列表添加字段。 但作为不是程序员,我不确定这是否是正确的问题。

php mysql google-cloud-platform yii google-cloud-sql
1个回答
0
投票

这个问题有两种回答方式:

  1. 始终可以更改

    sql_mode
    以省略 ONLY_FULL_GROUP_BY 作为会话变量。客户端(即应用程序)可以在连接到数据库后执行此操作。此选项仅对该会话有效,但没有什么可以阻止应用程序在需要的每个会话中执行此操作。

  2. 在我看来,启用 ONLY_FULL_GROUP_BY 模式总是更好。禁用它会产生查询结果不明确的风险。我在回答这个问题时发布了一个例子来解释原因:

    Column 在选择列表中无效的原因是它未包含在聚合函数或 GROUP BY 子句中

    很难相信开发人员无法编写在启用 ONLY_FULL_GROUP_BY 的情况下工作的正确代码。事实上,如果他们使用 MySQL、MariaDB 或 SQLite 以外的数据库,甚至不可能禁用单值规则的执行(即 Oracle 和 Microsoft SQL 开发人员几十年来一直很好地遵循此规则) 。这让我觉得你们开发人员的 SQL 技能不太好。

© www.soinside.com 2019 - 2024. All rights reserved.