如何在MySQL或Sequelize中仅禁用\u full\u group\u by

如何在MySQL或Sequelize中仅禁用\u full\u group\u by,mysql,sequelize.js,Mysql,Sequelize.js,在Sequelize中,我如何执行与SET sql_mode=等效的操作以避免出现以下错误 SequelizeDatabaseError:ER_Error_FIELD_WITH_GROUP:SELECT list的表达式2不在GROUP BY子句中,并且包含未聚合的列“assets.GROUP_id”,该列在功能上不依赖GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容 或者,我如何更改MySQL的默认配置,以使sql_模式始终保持不变

在Sequelize中,我如何执行与SET sql_mode=等效的操作以避免出现以下错误

SequelizeDatabaseError:ER_Error_FIELD_WITH_GROUP:SELECT list的表达式2不在GROUP BY子句中,并且包含未聚合的列“assets.GROUP_id”,该列在功能上不依赖GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容

或者,我如何更改MySQL的默认配置,以使sql_模式始终保持不变

谢谢

试试这个:

SET GLOBAL sql_mode = '';

获取现有的sql\u模式,并按值仅删除唯一的\u FULL\u GROUP\u,而不是将其完全清空

SELECT @@sql_mode; -- Get the current sql_mode
您可能会得到如下结果:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
现在从结果中删除唯一的\u FULL\u GROUP\u BY并更新sql\u模式

SET GLOBAL sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
SET SESSION sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
现在你完成了

请注意,SET GLOBAL用于更新全局设置,该设置在重新启动mysql服务器或服务之前不会生效。 即使不重新启动mysql服务器,SET会话也会立即对当前会话生效。因此,您可以根据需要使用其中一个或两个


或者,从MySQL 5.7开始,您不必禁用此设置,只需使用任何_值函数来修改查询,无论字段是否抛出错误。例如,您发布的错误消息中提到的任何\u VALUEassets.group\u id。

在遵循其他答案之后,
请注意,如果更改sql_模式,则不会影响存储过程。sql_模式与SP本身一起存储,因此您需要在sql_模式更改后再次删除并执行SP

太好了!这似乎已经做到了!非常感谢。一旦我被允许,我将接受这个答案。显然,您的响应速度比stackoverflow允许我接受的速度快得多感谢它帮助了我,因为它在今天之前工作得非常完美。它给了我一个错误。我可以知道原因吗?ANY_VALUEassets.group_id解决方案非常完美。好黑客