lwa*_*135 3 mysql sequelize.js
在Sequelize中,我如何做相同的操作SET sql_mode=''以避免出现以下错误?
SequelizeDatabaseError: ER_WRONG_FIELD_WITH_GROUP: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'assets.group_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
或者,或者,如何更改MySQL的默认配置,以便sql_mode始终''?
谢谢!
获取现有的sql_mode并仅删除该ONLY_FULL_GROUP_BY值,而不是将其完全清空.
SELECT @@sql_mode; -- Get the current sql_mode
Run Code Online (Sandbox Code Playgroud)
您可能会得到如下结果;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)
现在ONLY_FULL_GROUP_BY从结果中删除并更新sql_mode
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";
Run Code Online (Sandbox Code Playgroud)
现在你完成了.
请注意,SET GLOBAL将更新全局设置,该设置在重新启动mysql服务器或服务之前不会生效.即使不重新启动mysql服务器,SET SESSION也会立即对您当前的会话产生此影响.因此,您可以根据需要使用其中一个或两个.
或者,从MySQL 5.7开始,您可以通过ANY_VALUE在任何字段抛出错误时使用函数来修改查询,而不是禁用此设置.例如,ANY_VALUE(assets.group_id)如您发布的错误消息中所述.