HGDB 4.5.8.8开启oracle兼容执行带聚合函数的SQL导致数据库进程被信号11杀死

张开发
2026/4/8 0:20:46 15 分钟阅读

分享文章

HGDB 4.5.8.8开启oracle兼容执行带聚合函数的SQL导致数据库进程被信号11杀死
文章目录环境症状问题原因解决方案环境系统平台银河麒麟 海光版本4.5.8症状数据库版本瀚高安全版4.5.8.8介质包hgdb-see-4.5.8.8-3937-efc2bbd-20241016.x86_64.rpm信号11的报错信息2025-06-16 10:23:04.890 CST,1857,681b3d37.741,370,2025-05-07 19:00:07 CST,0,LOG,00000,“server process (PID 656071) was terminated by signal 11: Segmentation fault”,Failed process was running:xxx查询SQL报错SQL1非聚合字段不在groupby中的SQLSELECTt1.id,t1.v,t1.v1,count(t1.id)ASnumFROMt1LEFTJOINt2ONt1.idt2.idWHEREt1.v1ISNOTNULL;2groupby中包含所有非聚合字段但是orderby字段不在groupby中的SQLSELECTt1.id,t1.v,t1.v1,count(t1.id)ASnumFROMt1LEFTJOINt2ONt1.idt2.idWHEREt1.v1ISNOTNULLGROUPBYt1.id,t1.v,t1.v1ORDERBYt2.id;问题原因数据库开启oracle兼容后group by、order by相关语法与oracle仍有区别使用oracle兼容的分支会引起信号11导致数据库服务异常。解决方案1、临时解决方案1非聚合字段不在group by中的SQL要把非聚合字段都添加到group by中。修改后的SQLSELECTt1.id,t1.v,t1.v1,count(t1.id)ASnumFROMt1LEFTJOINt2ONt1.idt2.idWHEREt1.v1ISNOTNULLGROUPBYt1.id,t1.v,t1.v1;2group by中包含所有非聚合字段但是order by字段不在group by中的SQL要把order by中不在group by中的字段删除按需改成group by中的字段。修改后的SQLSELECTt1.id,t1.v,t1.v1,count(t1.id)ASnumFROMt1LEFTJOINt2ONt1.idt2.idWHEREt1.v1ISNOTNULLGROUPBYt1.id,t1.v,t1.v1ORDERBYt1.id;--t2.id改成了t1.id2、永久解决方案申请补丁包或者升级数据库版本。

更多文章