expect RPAREN, actual LPAREN pos 31, line 1, column 14, token LPAREN

当遇到`expect RPAREN, actual LPAREN pos`这类Druid解析SQL错误时,可能是由于Druid数据库连接池过滤器对某些关键字处理不当。尽管SQL在MySQL8.0中能正常执行,但在程序中可能因解析问题导致异常。解决方案是检查SQL中的保留关键字,用反引号(`)将其包裹。尝试修改SQL查询语句,而不是仅修改关键字格式,以解决该异常。" 115971791,10542940,MATLAB实现:多尺度低秩稀疏分解及ADMM算法,"['低秩稀疏分解', 'MATLAB', '算法实现']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于复杂sql执行时报错信息:

com.alibaba.druid.sql.parser.ParserException: syntax error, error in :' tmp as ((', expect RPAREN, actual LPAREN pos 31, line 1, column 14, token LPAREN

首先报错sql放到mysql8.0执行是ok的。但是在程序里报错。说明是解析sql时有问题导致生成的sql执行出现问题。问题就出现druid数据库连接池过滤器发现一些关键字,或者保留关键字没做引号标注,会报异常。


具体的sql及其报错信息如下。

 

merge sql error, dbType mysql, druid-1.1.21, sql : with tmp as (
                (
                        select cvi.id                    as virtualClassId,
                               cvi.start_time            as startTime,
                               cvi.student_user_id       as id,
                               usi.real_name             as name,
                               1                         as classType,
                               ce.id                     as editionId,
                               ci.course_name            as courseName,
                               cl.unit_no                as unitNo,
                               cl.unit_lesson_no         as unitLessonNo,
                               cvi.feedback_status       as feedbackStatus,
                               cvi.teacher_attend_status as teacherAttendStatus
                        from classroom_virtualclass_info cvi
                                     inner join finance_classroom_audit fca on fca.virtual_class_id = cvi.id
                                     inner join user_student_info usi on cvi.student_user_id = usi.id
                                     inner join course_lesson cl on cvi.lesson_id = cl.id
                                     inner join course_info ci on cl.course_id = ci.id
                                     inner join course_edition ce on ci.course_edition_id = ce.id
                        where cvi.tutor_user_id = ?
                          and cvi.start_time >= ?
                          and cvi.start_time <= ?
                          and cvi.remove = 0
                          and cvi.status in (3, 4)
                          and fca.remove = 0
                          and fca.class_type_id = 1
                        )
                union all
                (
                        select svi.id                    as virtualClassId,
                               svi.start_time            as startTime,
                               svi.class_id              as id,
                               sci.class_name_zh         as name,
                               2                         as classType,
                               ce.id                     as editionId,
                               ci.course_name            as courseName,
                               cl.unit_no                as unitNo,
                               cl.unit_lesson_no         as unitLessonNo,
                               svi.feedback_status       as feedbackStatus,
                               svi.teacher_attend_status as teacherAttendStatus
                        from smallclass_virtualclass_info svi
                                     inner join finance_classroom_audit fca on fca.virtual_class_id = svi.id
                                     inner join smallclass_class_info sci on svi.class_id = sci.id
                                     inner join course_lesson cl on svi.lesson_id = cl.id
                                     inner join course_info ci on cl.course_id = ci.id
                                     inner join course_edition ce on ci.course_edition_id = ce.id
                        where svi.tutor_user_id = ?
                          and svi.start_time >= ?
                          and svi.start_time <= ?
                          and svi.remove = 0
                          and svi.status in (3, 4)
                          and fca.remove = 0
                          and fca.class_type_id = 1
                        )
                )
        select tmp.*
        from tmp as tmp
        order by tmp.startTime desc LIMIT ? 
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :' tmp as (
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万米高空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值