mysql - Spring Boot 数据源异常关闭

标签 mysql spring spring-boot

我已经在/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/

相关文章:

php - PHP和MYSQL游戏计时器比较

mysql - 获取最新的可接受差距的日期

java - Spring 3 bean 未正确连接

java - 2 个配置文件,2 个方法实现,1 个通过 Thymeleaf 调用 html 文件。如何?

java - Spring Boot 中的 SQL 注入(inject)预防

php - 如何创建原始帖子的链接,PHP

mysql - 一对多和一对一的关系混在一起,怎么办?

java - 从 Spring JdbcTemplate 的 queryForObject 方法返回泛型类型

java - 无法使用 spring-boot-devtools 运行 2 个 Web 服务器

spring-security - Spring Cloud OAuth2 : Resource server with multiple Authorization server