gpt4 book ai didi

mysql - Spring Boot 数据源异常关闭

转载 作者:行者123 更新时间:2023-11-30 00:01:26 26 4
gpt4 key购买 nike

我已经在/health 下设置了 spring boot 以显示数据源状态。不过,我得到了这个 JSON:

"dataSource" : {
"status" : "DOWN",
"database" : "MySQL",
"error" : "org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [SELECT 1]; Conversion not supported for type java.lang.Object; nested exception is java.sql.SQLException: Conversion not supported for type java.lang.Object"
},

正如你所看到的,我的数据库是 mysql,我在 Windows8 上运行它。我确实尝试了“select 1”查询,它确实在 mysql 命令行中返回了 1。知道问题出在哪里吗?

最佳答案

DataSourceHealthIndicator 通过调用 JdbcTemplate 运行其配置的查询(默认为 SELECT 1):

this.jdbcTemplate.queryForObject(query, Object.class)

在 Java 6 上,这最终会导致调用 ResultSet.getObject(index) 并且一切按预期工作。在 Java 7 上,调用的是 ResultSet.getObject(index, Object.class)(getObject 的此重载是 Java 7 中的新功能)。在其默认配置中,MySQL JDBC 驱动程序无法创建并返回 java.lang.Object 的实例,因此它会抛出问题中描述的异常。

您可以更改 MySQL 的行为,并通过启用自动反序列化让它返回适合该列的任何实例:

spring.datasource.url: jdbc:mysql://localhost/test?autoDeserialize=true

我还打开了Spring boot issue这样我们就可以进行更改,以便无需启用自动反序列化。

关于mysql - Spring Boot 数据源异常关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com