簡體   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