为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8
【操作系统】:
【CPU】:
【问题描述】:两个都是dm v8的数据库 相同的sql语句,一台执行正常一台执行报4080错误。
执行的sql语句:
select
/+ GROUP_OPT_FLAG(1)*/
max(w.collect_time) collectTime,
case
when o.state = 1 then '关机'
when o.state = 2 then '空闲'
when o.state = 3 then '运行'
when o.state = 4 then '报警' end as machOpen
from ehm_machine_info m
left join EHM_MACHINE_WORK w on w.match_id = m.asset_no
left join mdc_data_state o on o.mach_id = m.asset_no
where m.mach_no = '636'
运行正常截图
运行异常截图
已尝试解决办法
A:sp_set_para_value(1,'GROUP_OPT_FLAG',1);
B:sp_set_para_value(2,'COMPATIBLE_MODE',4)
都无效。
现在兼容是4吗?
两个数据库版本号信息和dm.ini文件发下。
另外可以发下相关表结构的sql,以便测试。
两个数据库版本是一样的吗
谢谢大家!
原本的sql是这样,然后一个运行成功 一个运行失败。select
/+ GROUP_OPT_FLAG(1)*/
max(w.collect_time) collectTime,
case
when o.state = 1 then '关机'
when o.state = 2 then '空闲'
when o.state = 3 then '运行'
when o.state = 4 then '报警' end as machOpen
from ehm_machine_info m
left join EHM_MACHINE_WORK w on w.match_id = m.asset_no
left join mdc_data_state o on o.mach_id = m.asset_no
where m.mach_no = '636'
最后在sql后面添加了group by w.xx 两个数据库都可以运行。问题也算解决了。
但是好奇的是不加group by w.xx 为何一个可以一个不可以
报错的数据库运行
select /+ GROUP_OPT_FLAG(1)/ * from ehm_machine_info
该语句可正常查询