欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > org.springframework.jdbc.BadSqlGrammarException异常

org.springframework.jdbc.BadSqlGrammarException异常

2025/5/6 14:55:16 来源:https://blog.csdn.net/m0_73939789/article/details/140230018  浏览:    关键词:org.springframework.jdbc.BadSqlGrammarException异常

Bug 记录

概述

在执行定时任务更新电子书统计信息时,遇到了 org.springframework.jdbc.BadSqlGrammarException 异常,具体表现为 SQL 函数 count 被错误地解析为自定义函数 wiki.count,导致数据库更新操作失败。

详细描述
  • 错误信息

    org.springframework.jdbc.BadSqlGrammarException: 
    ### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: FUNCTION wiki.count does not exist.
    ### The error may exist in file [E:\projectSpace\wiki\backed\wiki\target\classes\mapper\DocMapperCust.xml]
    ### The error occurred while setting parameters
    ### SQL: update ebook t1, (select ebook_id, count (1) doc_count, sum (view_count) view_count, sum (vote_count) vote_count from doc group by ebook_id) t2 set t1.doc_count = t2.doc_count, t1.view_count = t2.view_count, t1.vote_count = t2.vote_count where t1.id = t2.ebook_id
    ### Cause: java.sql.SQLSyntaxErrorException: FUNCTION wiki.count does not exist.
    
  • 受影响文件

    • E:\projectSpace\wiki\backed\wiki\target\classes\mapper\DocMapperCust.xml
  • 相关代码片段

    update ebook t1, (select ebook_id, count (1) doc_count, sum (view_count) view_count, sum (vote_count) vote_count from doc group by ebook_id) t2
    set t1.doc_count = t2.doc_count, t1.view_count = t2.view_count, t1.vote_count = t2.vote_count
    where t1.id = t2.ebook_id
    
  • 错误分析
    该问题由数据库方言配置不当引起,导致标准 SQL 函数 count 被错误解析为用户自定义函数,进而引发语法错误。

解决方案
  • 修正措施

    • 确认并更新 Spring Boot 项目的数据库方言配置,确保使用正确的 MySQL 方言。
    • application.propertiesapplication.yml 文件中,添加或确认存在以下配置:
      spring.datasource.platform=mysql
      
  • 验证结果
    更新配置后,重新运行定时任务,确认数据库更新操作不再抛出异常,统计信息更新功能恢复正常。

  • 后续建议

    • 定期审查和测试数据库相关的配置,确保其与使用的数据库类型匹配。
    • 在开发过程中,特别是在涉及数据库操作时,增加单元测试和集成测试,及时发现并修复此类问题。
记录人

Leo

记录时间

[2024/7/6]

状态

在这里插入图片描述

已解决

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词