【问题标题】:Cant create h2 table via docker (sprint boot app)无法通过 docker 创建 h2 表(spring boot 应用程序)
【发布时间】:2021-06-12 17:48:30
【问题描述】:

我正在使用 spring boot 构建一个 rest api。

我尝试以各种方式在 h2 db 中创建表,例如使用 data.sql 或 schema.sql,但它们都没有真正创建表,所以我编写了以下代码:

当我通过 ide(intelij) 运行这段代码时,它可以完美运行。

但是当我尝试使用 java "-jar target/projectName.jar" 运行它时,它不会创建表。

此外,当我从 docker 打包并运行应用程序时,不会创建表。 有人知道我在做什么错吗?

应用程序。特性:

Docker 文件:

【问题讨论】:

  • 你的 projectName.jar 中是否存在 h2 jar?我的意思是当你打包你的projectName.jar时,里面是否包含h2?
  • 另外请考虑发布实际代码而不是图片。
  • @akuma8 如何添加?

标签: java spring-boot docker jpa h2


【解决方案1】:

请参考this 了解如何使数据库初始化工作。 您可以创建一个 sql 文件为 src/main/resources/schema-h2.sql 并具有类似的应用程序属性

server.port=8090
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE
spring.h2.console.enabled=true
spring.jpa.open-in-view=false
spring.jpa.show-sql=true
spring.datasource.platform=h2
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always

物业 spring.datasource.initialization-mode=always 将帮助您使用schema-h2.sql 文件中写入的内容初始化数据库

请确保 spring.jpa.hibernate.ddl-auto=none 始终设置为 none 以正确运行 db 初始化脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-08
    • 2021-10-30
    • 2021-08-12
    • 2020-04-07
    • 2021-08-12
    • 2018-09-02
    • 2021-09-14
    • 2021-06-03
    相关资源
    最近更新 更多