[英]Spring boot datasource is down with exception
我已经设置了spring boot,因此在/ health下显示数据源状态。 但是,我得到了这个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上运行它。 我确实尝试了“选择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问题,以便我们可以进行更改,从而不必启用自动反序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.