如果希望仅通过配置达梦数据库而不修改代码来解决 “不是 group by 表达式” 的错误,可以通过调整达梦数据库的 sql
模式兼容参数,使其兼容 mysql 等数据库的宽松分组查询规则(即允许 select 中包含 group by 中未出现的非聚合字段)。
mysql中5.7之后的group by查询,需要改sql_mode的值,这里不做阐述,网上很多教程。
这里主要针对达梦数据库的设置方式。
1.登录达梦数据库(使用 sysdba 权限):
/opt/dmdbms/bin/disql sysdba/你的密码@localhost:5236
2.修改数据库参数 compatible_mode
达梦的 compatible_mode 参数用于设置数据库兼容模式,默认为 0(达梦模式),可改为 4(兼容 mysql 模式),该模式下会放宽 group by 的校验规则:
-- 查看当前兼容模式(默认0) select sf_get_para_value(2, 'compatible_mode'); -- 修改为兼容mysql模式(需要重启数据库生效) sp_set_para_value(2, 'compatible_mode', 4);
3.重启达梦数据库服务(使参数生效):
# 切换到root用户 su - root # 重启服务(假设服务名为dmservicedmserver) systemctl restart dmservicedmserver
附:达梦数据库group by分组
梦数据库类似oracle数据库分组的时候, 查询的语句每个字段都要添加到分组里面,如果不添加的会报错

查询语句里加入下图, 因为星号被屏蔽了(仅供参考/+ group_opt_flag(1)/)就可以对某一个字段分组了
总结
到此这篇关于达梦数据库兼容mysql group by查询设置方式的文章就介绍到这了,更多相关达梦数据库兼容mysql group by查询内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论