在升级到 Spring Boot 2.0 时,得到 UnsatisfiedDependencyException

Posted

技术标签:

【中文标题】在升级到 Spring Boot 2.0 时,得到 UnsatisfiedDependencyException【英文标题】:while upgrading to spring boot 2.0, getting UnsatisfiedDependencyException 【发布时间】:2020-07-28 02:13:47 【问题描述】:

原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'mobimed.team'不存在 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_202] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_202] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_202] 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_202] 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966) ~[mysql-connector-java-5.1.46.jar:5.1.46] 在 com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-2.7.8.jar:na] 在 com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) ~[HikariCP-2.7.8.jar:na] 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final] ...省略了95个常用框架

进程以退出代码 1 结束

其实这个表是存在于db中的

@Entity
@Table(name = "Teams")
@DynamicUpdate
@Data
public class Team implements Serializable 

Spring Boot 2.0 迁移后:当我收到此错误时,需要 jdbcUrl 和 driverClassName,我已使用此解决 app.datasource.jdbc-url=jdbc:mysql://localhost/test 现在,我收到上述错误

【问题讨论】:

【参考方案1】:

从注释@Table 我可以看到您已将 BD 表命名为 Teams 并且 Spring 正在尝试获取 Team 数据库并因此失败。我猜你有一些查询引用了不正确的表名

【讨论】:

感谢您的来信!是的,我一直在使用休眠查询 @Query(value = "SELECT T.name FROM Team T WHERE T.id = :id") 这在 Spring Boot 1.5 中运行良好 所以你BD里的表名其实是Team或者Teams? 它是数据库中的团队 好酷,在这种情况下,只需尝试编辑现有查询以选择正确的表:@Query(value = "SELECT T.name FROM Teams T WHERE T.id = :id")跨度> 嘿,感谢您提出这个问题,实际上我将其中一个查询修改为 nativeQuery 并且仍在使用 Team。现在开始工作了!再次感谢!

以上是关于在升级到 Spring Boot 2.0 时,得到 UnsatisfiedDependencyException的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.0干货系列:Spring Boot1.5X升级到2.0指南

从 Spring Boot 1.5 升级时为 Spring Boot 2.0 acuator 框架配置安全性

从Spring Boot 1.5升级到2.0

雪球 Spring Boot 2.0 升级经验谈

给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑

spring boot 2.0之使用spring boot