我是编程新手,我正在尝试使用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
2条答案
按热度按时间sz81bmfz1#
您需要为postgresql设置一个属性,以便在启动时自动创建表:
或者如果每次都想从一个干净的数据库开始:
对于像h2这样的嵌入式数据库,将设置spring boot
spring.jpa.hibernate.ddl-auto=create
自动另请参阅这个12年前的问题:为什么不应该在生产中这样做:hibernate:hbm2ddl.auto=updatein production?
在生产环境中,您应该在应用程序之外管理数据库表,或者使用liquibase或flyway之类的工具
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