Spring启动数据源出现异常

时间:2014-07-28 18:55:47

标签: mysql spring spring-boot

我已设置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上运行它。我确实尝试了'select 1'查询,它确实在mysql的命令行中返回1。知道问题可能在哪里吗?

1 个答案:

答案 0 :(得分:0)

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

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,以便我们可以进行更改,以便不需要启用自动反序列化。