GBase 8s
适配迁移
问答

mybatis+pagehelper+GBase8s对复杂sql不支持

发表于2025-09-18 18:06:37244次浏览16个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:v8.8

【操作系统】:centos

【问题描述】*: 

 

使用pagehelper对简单sql分页正常支持,但涉及到WITH语法时报错并且没有具体报错原因,报错如下(以下sql在sql控制台执行正常运行,在系统内执行才报下面的问题):

### Error querying database.  Cause: java.sql.SQLException: A syntax error has occurred.
### The error occurred while executing a query
### SQL: SELECT  FIRST ?  * FROM ( WITH allCompany AS (         SELECT ID, company_name         FROM danger_company         WHERE is_delete = '1'         UNION         SELECT ID, company_name         FROM company_new         WHERE is_delete = '0'           AND update_time IS NOT NULL     )     SELECT         ac.ID,         ac.company_name,         SUM(CASE WHEN erh.hidden_type = '劳保用品' THEN 1 ELSE 0 END) AS lbyp_count,         SUM(CASE WHEN erh.hidden_type = '危险作业管理' THEN 1 ELSE 0 END) AS wxzygl_count,         SUM(CASE WHEN erh.hidden_type = '危险化学品管理' THEN 1 ELSE 0 END) AS wxhxpgl_count,         SUM(CASE WHEN erh.hidden_type = '双重预防体系建设及运行情况' THEN 1 ELSE 0 END) AS szyftxjsjyhqk_count,         SUM(CASE WHEN erh.hidden_type = '安全培训情况' THEN 1 ELSE 0 END) AS aqpxqk_count,         SUM(CASE WHEN erh.hidden_type = '安全投入' THEN 1 ELSE 0 END) AS aqtr_count,         SUM(CASE WHEN erh.hidden_type = '安全机构及人员' THEN 1 ELSE 0 END) AS aqjgjry_count,         SUM(CASE WHEN erh.hidden_type = '安全警示标识' THEN 1 ELSE 0 END) AS aqjsbs_count,         SUM(CASE WHEN erh.hidden_type = '应急管理情况' THEN 1 ELSE 0 END) AS yjglqk_count,         SUM(CASE WHEN erh.hidden_type = '有限空间管理' THEN 1 ELSE 0 END) AS yxkjgl_count,         SUM(CASE WHEN erh.hidden_type = '标准化建立情况' THEN 1 ELSE 0 END) AS bzhjlqk_count,         SUM(CASE WHEN erh.hidden_type = '现场作业情况' THEN 1 ELSE 0 END) AS xczyqk_count,         SUM(CASE WHEN erh.hidden_type = '用电安全' THEN 1 ELSE 0 END) AS ydaq_count,         SUM(CASE WHEN erh.hidden_type = '相关方管理' THEN 1 ELSE 0 END) AS xgfgl_count,         SUM(CASE WHEN erh.hidden_type = '相关管理制度制定情况' THEN 1 ELSE 0 END) AS xgglzdzdqk_count,         SUM(CASE WHEN erh.hidden_type = '设备设施' THEN 1 ELSE 0 END) AS sbss_count,         SUM(CASE WHEN erh.hidden_type = '责任制制定及签署落实情况' THEN 1 ELSE 0 END) AS zrzzdjqslsqk_count,         COUNT(*) AS total_count     FROM         allCompany ac         JOIN experts_record_hidden erh ON ac.ID = erh.com_id         WHERE erh.hidden_type IS NOT NULL         GROUP BY ac.ID,ac.company_name         ORDER BY ac.ID ) TEMP_T
### Cause: java.sql.SQLException: A syntax error has occurred.
; bad SQL grammar []; nested exception is java.sql.SQLException: A syntax error has occurred.如何解决?

悬赏:10吉币
回答被发帖人采纳后可获得赏金

评论

登录后才可以发表评论
用户头像
路路路发表于 10个月前
稍等
用户头像
远方发表于 10个月前
这个大概率是不支持变量的方式 数据库是不是老版本,可以升级到最新版本
用户头像
梦之泪殇严肃版发表于 10个月前
@远方:GBase8sV8.8_TL_3.3.0_2_36477d(本机连接改造,当前使用)/GBase8sV8.8_TL_3.6.3_3X2_1_783c8d(服务器数据库版本)
用户头像
远方发表于 10个月前
@梦之泪殇严肃版:后面一个版本支持的
用户头像
远方发表于 10个月前
@梦之泪殇严肃版:把本机版本升级一下把
用户头像
梦之泪殇严肃版发表于 10个月前
@远方:请看一下这个问题,是GBase8sV8.8_TL_3.6.3_3X2_1_783c8d版本的问题
https://www.gbase.cn/community/post/6212
用户头像
liaosnet发表于 10个月前
需更新数据库版本,看这个报错(语法错误),应当是当前版本还不支持cte绑定变量。
用户头像
梦之泪殇严肃版发表于 10个月前
@liaosnet:GBase8sV8.8_TL_3.6.3_3X2_1_783c8d麻烦看下该版本是否支持
用户头像
liaosnet发表于 10个月前
@梦之泪殇严肃版:该版本应当是支持的,驱动同时更新了吗?
用户头像
梦之泪殇严肃版发表于 10个月前
@liaosnet:改造阶段连不上该版本,GBase8sV8.8_TL_3.3.0_2_36477d这个除了手动拼接还有其他方法能适配吗
用户头像
liaosnet发表于 10个月前
@梦之泪殇严肃版:with as 那段变成子查询吧。。
SELECT
FIRST ? *
FROM
(
SELECT
ac.ID,
ac.company_name,
SUM( CASE WHEN erh.hidden_type = '劳保用品' THEN 1 ELSE 0 END ) AS lbyp_count,
SUM( CASE WHEN erh.hidden_type = '危险作业管理' THEN 1 ELSE 0 END ) AS wxzygl_count,
SUM( CASE WHEN erh.hidden_type = '危险化学品管理' THEN 1 ELSE 0 END ) AS wxhxpgl_count,
SUM( CASE WHEN erh.hidden_type = '双重预防体系建设及运行情况' THEN 1 ELSE 0 END ) AS szyftxjsjyhqk_count,
SUM( CASE WHEN erh.hidden_type = '安全培训情况' THEN 1 ELSE 0 END ) AS aqpxqk_count,
SUM( CASE WHEN erh.hidden_type = '安全投入' THEN 1 ELSE 0 END ) AS aqtr_count,
SUM( CASE WHEN erh.hidden_type = '安全机构及人员' THEN 1 ELSE 0 END ) AS aqjgjry_count,
SUM( CASE WHEN erh.hidden_type = '安全警示标识' THEN 1 ELSE 0 END ) AS aqjsbs_count,
SUM( CASE WHEN erh.hidden_type = '应急管理情况' THEN 1 ELSE 0 END ) AS yjglqk_count,
SUM( CASE WHEN erh.hidden_type = '有限空间管理' THEN 1 ELSE 0 END ) AS yxkjgl_count,
SUM( CASE WHEN erh.hidden_type = '标准化建立情况' THEN 1 ELSE 0 END ) AS bzhjlqk_count,
SUM( CASE WHEN erh.hidden_type = '现场作业情况' THEN 1 ELSE 0 END ) AS xczyqk_count,
SUM( CASE WHEN erh.hidden_type = '用电安全' THEN 1 ELSE 0 END ) AS ydaq_count,
SUM( CASE WHEN erh.hidden_type = '相关方管理' THEN 1 ELSE 0 END ) AS xgfgl_count,
SUM( CASE WHEN erh.hidden_type = '相关管理制度制定情况' THEN 1 ELSE 0 END ) AS xgglzdzdqk_count,
SUM( CASE WHEN erh.hidden_type = '设备设施' THEN 1 ELSE 0 END ) AS sbss_count,
SUM( CASE WHEN erh.hidden_type = '责任制制定及签署落实情况' THEN 1 ELSE 0 END ) AS zrzzdjqslsqk_count,
COUNT(*) AS total_count
FROM
(
SELECT
ID,
company_name
FROM
danger_company
WHERE
is_delete = '1'
UNION SELECT
ID,
company_name
FROM
company_new
WHERE
is_delete = '0'
AND update_time IS NOT NULL
) ac
JOIN experts_record_hidden erh ON
ac.ID = erh.com_id
WHERE
erh.hidden_type IS NOT NULL
GROUP BY
ac.ID,
ac.company_name
ORDER BY
ac.ID
) TEMP_T
最佳回答
用户头像
levvel发表于 9个月前
听说评论可以拿积分,我试一下子
用户头像
GBase用户28017发表于 9个月前
不错。
用户头像
levvel发表于 8个月前
给你点个赞
崔哥发表于 3个月前
黄师塔前江水东,春光懒困倚微风。桃花一簇开无主,可爱深红爱浅红?
用户头像
levvel发表于 2个月前
太实用了!