繁体   English   中英

Spring spring.jpa.hibernate.ddl-auto等于validate时Boot 2.3启动失败

[英]Spring Boot 2.3 fails to start when spring.jpa.hibernate.ddl-auto equals to validate

我有一个 Spring boot: 2.3.0.RELEASE 应用程序与 Flyway: 6.4.1 和 Hibernate: hibernate-core: 5.4.22.Final, hibernate-validator: 6.1.5.Final, hibernate-commons-annotations: 5.1.0 。最后。

我尝试搜索错误但找不到解决方案。 我尝试应用此答案,但每当设置 spring.jpa.hibernate.ddl-auto=validate 时,如果我不使用它就不起作用, drop-create none正常值。

我在Docker运行MySQL 5.7,有表的数据库就在那里。

错误如下:

ConfigServletWebServerApplicationContext:在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“requestMappingHandlerAdapter”的 bean 时在 class 路径资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ 中定义时出错EnableWebMvcConfiguration.class]:通过方法“requestMappingHandlerAdapter”参数 1 表示的不满足的依赖关系; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:在 class 路径资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class] 中定义名称为“mvcConversionService”的 bean 创建时出错:通过工厂实例化 Bean方法失败; 嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.format.support.FormattingConversionService]:工厂方法 'mvcConversionService' 抛出异常; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“customerRepository”的 bean 在 org.cloudwheel.files.configuration.customer.persistence.CustomerRepository 中定义时在 JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration 上声明的@EnableJpaRepository 中定义时出错:无法解析对bean 'jpaMappingContext' 同时设置 bean 属性 'mappingContext'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“jpaMappingContext”的 bean 时出错:调用 init 方法失败; 嵌套异常是 javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; 嵌套异常是 org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [my_files]

我该如何调试呢? 我看到很多这样的问题,但没有一个解决方案对我有用。

注意:表my_files存在。 我可以通过 IntelliJ 和 MySQL Workbench 验证这一点。 另外,如果可能的话,我不想降级。

更新:

我确信数据库不是问题:

2020-12-01 14:24:04.795 INFO 23295 --- [restartedMain] osbwembedded.tomcat.TomcatWebServer: Tomcat 用端口初始化:8080 (http) 2020-12-01 14:24:04.8205 -- 28205 -- INFO - [restartedMain] o.apache.catalina.core.StandardService:启动服务[Tomcat] 2020-12-01 14:24:04.800 INFO 23295 --- [restartedMain] org.apache.catalina.core.StandardEngine:启动Servlet引擎: [Apache Tomcat/9.0.35] 2020-12-01 14:24:04.895 INFO 23295 --- [restartedMain] oac.c.C.[Tomcat].[localhost].[/]: 初始化 8818321185122 WebContext-Application2 embedded -01 14:24:04.895 INFO 23295 --- [restartedMain] osweb.context.ContextLoader: Root WebApplicationContext: initialization completed in 1762 ms 2020-12-01 14:24:07.982 INFO 23295 --- [restartedMain] ofc.internal888. .license.VersionPrinter:Flyway Community Edition 6.4.1 by Redgate 2020-12-01 14:24:07.986 INFO 23295 --- [restartedMain] com。 zaxxer.hikari.HikariDataSource
:HikariPool-1 - 开始...... 2020-12-01 14:24:08.090 INFO 23295 --- [restartedMain] com.zaxxer.hikari.HikariDataSource:HikariPool-1

  • 开始完成。 2020-12-01 14:24:08.113 INFO 23295 --- [restartedMain] ofc.internal.database.DatabaseFactory: 数据库:jdbc:mysql://localhost:3307/files (MySQL 5.7) 2020-14: 24:08.186 INFO 23295 --- [restartedMain] ofcore.internal.command.DbValidate:成功验证了 13 个迁移(执行时间 00:00.029s)2020-12-01 14:24:08.199 INFO 23295 --- [restartedMain] ofcore .internal.command.DbMigrate:架构files的当前版本:1.13 2020-12-01 14:24:08.200 INFO 23295 --- [restartedMain] ofcore.internal.command.DbMigrate:架构files是最新的。 无需迁移。 2020-12-01 14:24:08.268 INFO 23295 --- [restartedMain] ossconcurrent.ThreadPoolTaskExecutor: 初始化 ExecutorService 'applicationTaskExecutor' 2020-12-01 14:24:08.281 INFO 23295 --- [restartedMain] oss88112884465
    : 初始化 ExecutorService 'taskScheduler' 2020-12-01 14:24:08.330 INFO 23295 --- [ task-1] o.hibernate.jpa.internal.util.LogHelper: HHH000204: Processing PersistenceUnitInfo [name: default1] 2-020 14:24:08.374 INFO 23295 --- [task-1] org.hibernate.Version: HHH000412: Hibernate ORM 核心版本 5.4.22.Final

异常org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [my_files]

你说数据库my_files存在,但 hibernate 需要一个表my_files存在 - 例如你使用注释 @Table(name = "my_files") 或者你有名称为 MyFiles 的实体。

检查数据库是否包含表my_files

正如@M.Deinum 在他的评论中提到的,Flyway 和 Hibernate 可能没有连接到同一个数据源。 就我而言,这是因为hibernate.temp.use_jdbc_metadata_defaults=true 一旦我删除了这个属性,一切都开始工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM