mybatis的Mapper.xml文件SQL语句BadSqlGrammarException之FUNCTION错误系列

本文记录了一次在使用SQL函数时遇到的语法错误,并详细解释了如何排查和解决该问题。错误出现在尝试使用MIN和MAX等函数时,由于函数名称与参数间存在空格而导致MySQL无法正确解析。

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

想必各位在开发过程中一定使用过:统计的功能,用到了很多SQL的函数,于是就直接写在Mapper文件中了;

比如:

member_num,MAX(ID) AS newestLoanID,MIN (ID) AS earlyLoanID,SUM(applied_amount) AS sumLoansAmount,status

select          

member_num,MAX(ID) AS newestLoanID,MIN (ID) AS earlyLoanID,SUM(applied_amount) AS sumLoansAmount,status

         from credit_loan_record ......

看似没有啥问题;

执行的时候报错了!

 

java.lang.RuntimeException: org.springframework.jdbc.BadSqlGrammarException: 

### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION credit_center.MIN does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

于是拿到mysql的客户端工具来执行!同样的错误!!

那么可想而知,真的是SQL的问题了,于是我们美化一下SQL

SELECT
member_num,
MAX( ID ) AS newestLoanID,
MIN( ID ) AS earlyLoanID,
SUM( applied_amount ) AS sumLoansAmount,
STATUS
FROM
credit_loan_record
WHERE
member_num = 18810875228
AND deleted = 0

竟然通过了!!!

等等!好像异常里面有提示! FUNCTION credit_center.MIN does not exist.

MIN (ID) AS earlyLoanID  ——竟然有空格
优化之后:MIN( ID ) AS earlyLoanID,
然后就不报错!

所以,如果以后提示:FUNCTION XXXXX.MIN does not exist.时候,记得看看是不是有空格啊!或者写的不够严谨

 

转载于:https://www.cnblogs.com/china-baizhuangli/p/8676661.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值