java—h2数据库与postgresql有何不同?h2在微服务中使用时是否自己创建表

qv7cva1a  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(496)

我是编程新手,我正在尝试使用springboot读取json并存储在数据库中,当我使用h2时,我不必创建它自己创建的表结构,但是当我使用postgres时,我会遇到找不到表的错误。在postgres中是否有自动创建表的方法?
它们是如何工作的,postgres不能自己创建表,我做错什么了吗`

spring.datasource.url=jdbc:h2:mem:testdb
 spring.datasource.driverClassName=org.h2.Driver
 spring.datasource.username=sa
 spring.datasource.password=
 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 spring.h2.console.enabled=true

spring.datasource.initialization-mode=always
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/MyDB
spring.datasource.username=postgres
spring.datasource.password=1234
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
sz81bmfz

sz81bmfz1#

您需要为postgresql设置一个属性,以便在启动时自动创建表:

spring.jpa.hibernate.ddl-auto=update

或者如果每次都想从一个干净的数据库开始:

spring.jpa.hibernate.ddl-auto=create

对于像h2这样的嵌入式数据库,将设置spring boot spring.jpa.hibernate.ddl-auto=create 自动
另请参阅这个12年前的问题:为什么不应该在生产中这样做:hibernate:hbm2ddl.auto=updatein production?
在生产环境中,您应该在应用程序之外管理数据库表,或者使用liquibase或flyway之类的工具

mlmc2os5

mlmc2os52#

如果嵌入了数据库,spring.jpa.hibernate.ddl-auto的默认值是create drop。否则,默认值为“无”。看看这个-https://docs.spring.io/spring-boot/docs/1.1.0.m1/reference/html/howto-database-initialization.html

相关问题