【问题标题】:Can't disable ONLY_FULL_GROUP_BY无法禁用 ONLY_FULL_GROUP_BY
【发布时间】:2018-05-17 08:38:54
【问题描述】:

我在 MySQL 5.7.14 上遇到了 ONLY_FULL_GROUP_BY 问题,即使我设置了 SQL 模式,我似乎也无法禁用它。

我已通过运行以下命令将@@sql_mode 都设置为删除 ONLY_FULL_GROUP_BY:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

我还更新了 my.cnf 文件,通过设置 sql-mode 参数将其排除在外。

如果我运行 select @@sql_mode,我可以看到 ONLY_FULL_GROUP_BY 不再设置。

但是,当我运行我的存储过程时,我仍然收到此错误:

1055 Expression #1 of SELECT list is not in GROUP BY clause and contains
nonaggregated column 'product_id' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

我在这里缺少什么? SP会忽略sql-mode吗?

我不想修改 SP 代码,因为它是从 3rd 方模块(用于 Magento)安装的,如果我们想升级,那会导致问题。

这是在我的本地开发服务器的 WAMP 上。

【问题讨论】:

    标签: php mysql magento stored-procedures


    【解决方案1】:

    对于遇到同样问题的任何人,事实证明 sql 模式是与存储过程一起存储的,所以即使我正确更改了 sql 模式,它根本不会更新 SP。为了解决这个问题,我刚刚删除并重新创建了存储过程,同时设置了新的 sql 模式。现在可以正常使用了!

    【讨论】:

    • 你能告诉我如何删除和重新创建存储过程吗?
    【解决方案2】:

    修复此删除并重新创建存储过程 它正在工作。

    使用your_schema_name; DROP 过程 IF EXISTS your_sp_name;

    分隔符 $$ 使用your_schema_name$$ 创建过程your_sp_name(IN your_input VARCHAR(50)) 开始

    -- 此处显示数据

    结束$$

    分隔符;

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 2017-06-12
      • 2020-08-22
      • 1970-01-01
      • 2021-02-25
      • 2017-10-08
      • 2019-02-04
      • 2018-06-17
      相关资源
      最近更新 更多