暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Spring boot Actuator从mysql迁移到SUNDB报 select 1 语法错误

原创 科蓝SUNDB编辑部 2022-11-02
967

1. 问题描述

Spring boot 项目从Mysql迁移到SUNDB数据库启动应用程序报错。
error: Org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator: DataSource health check failed
Cause by : SqlException: syntax error : select 1
image.png

2. 问题原因

项目使用了 Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用。
应用程序使用的 spring-boot-actuator 版本为2.1.3.RELEASE 此版本数据库健康检查代码部分如下:
包名:org.springframework.boot.actuate.jdbc
类名:DataSourceHealthIndicator.class
image.png
由以上代码可知首先判断数据库是否为DatabaseDriver 定义支持的数据库类型如不是则使用 select 1 进行数据源健康检查
而DatabaseDriver 为 org.springframework.boot.jdbc 包下的 DatabaseDriver.class 其中并未定义SUNDB,所以使用select 1 语句但SUNDB 不支持此种语法导致报错
image.png

3. 解决方案

3.1 在springboot 配置文件中关闭数据源检查功能

management.health.db.enabled=false
image.png
验证 :
image.png

3.2 升级 Spring Boot Actuator 版本到 2.3.1.RELEASE 以上版本,因为2.3.1.RELEASE 对判断代码进行了修改不在使用 default_query 而是使用固定值“isValid()”

image.png
spring boot 配置信息:
image.png

验证 :
image.png

最后修改时间:2023-07-17 14:49:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论