【问题标题】:Spring database initialization works only after app rebootSpring 数据库初始化仅在应用程序重新启动后才有效
【发布时间】:2020-03-23 19:41:42
【问题描述】:

我正在用 Java 中的 Rest api 完成一个培训项目, 使用springbootpostgresql 数据库。 我试图在启动时使用schema.sqldata.sql 初始化数据库。 当我使用该配置文件通过PgAdmin 直接查看数据库时,创建和data injections 工作正常。

spring.datasource.url = jdbc:postgresql://localhost:5432/db_test
spring.datasource.username = adm_library
spring.datasource.password = admin
spring.datasource.driver-class-name = org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
#hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.datasource.initialization-mode=always
#spring.jpa.hibernate.ddl-auto = none

但是,如果我尝试立即使用该应用程序,我会得到 ​​p>

org.postgresql.util.PSQLException: ERREUR: 关系 « book » 不存在

这里导致错误的实体是“书”,因为我尝试检索书籍,但如果我尝试检索用户等,它可能是“用户”... 我找到了一种通过重新启动应用程序来使其工作的方法

spring.datasource.initialization-mode=always

然后就没事了。 关于这种行为的任何解释? 谢谢!

【问题讨论】:

    标签: java spring postgresql hibernate spring-boot


    【解决方案1】:

    Spring Boot 自动创建嵌入式数据源的架构。可以使用 spring.datasource.initialization-mode 属性自定义此行为。

    例如,如果您想始终初始化 DataSource 而不管其类型如何:

    spring.datasource.initialization-mode=always
    

    更多细节可以在Java-DocSpring Documentation的java文档中查看。

    【讨论】:

    • 感谢您的回答,但它没有回答我的问题。我已经使用了您提到的内容,正如我的消息中所写的那样。
    猜你喜欢
    • 2015-12-01
    • 2018-12-15
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2020-02-03
    • 2019-09-06
    • 2011-01-23
    相关资源
    最近更新 更多