Spring Boot 不在 Postgres 中创建表

Posted

技术标签:

【中文标题】Spring Boot 不在 Postgres 中创建表【英文标题】:Spring Boot doesn't create tables in Postgres 【发布时间】:2018-12-19 15:42:21 【问题描述】:

我正在尝试基于实体生成架构表。但是没有创建表。怎么了?

实体示例:

@Entity
@NoArgsConstructor
@Getter @Setter
public class User 
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    public Long id;

    public String username;
    public String password;

    public User(String username, String password) 
        this.username = username;
        this.password = password;
    

    public User(String username) 
        this(username, username + "pass");
    

application.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/dbtest
spring.datasource.username=vssekorin
spring.datasource.password=
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update

依赖关系:

compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')
compile('org.telegram:telegrambots:3.6.1')
runtime('org.postgresql:postgresql')
compileOnly('org.projectlombok:lombok')
testCompile('org.springframework.boot:spring-boot-starter-test')

警告:GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

【问题讨论】:

您能否显示此“GenerationTarget 遇到异常接受命令:通过 JDBC 语句执行 DDL 时出错”的完整日志 【参考方案1】:

应该是:

spring.jpa.generate-ddl = true

在你的application.properties

或者你可以改变这一行:

spring.jpa.hibernate.ddl-auto=update

spring.jpa.hibernate.ddl-auto=create

更多详情:Spring Database initialization

【讨论】:

【参考方案2】:

只需将 spring.jpa.hibernate.ddl-autoupdate 更改为 create

【讨论】:

【参考方案3】:

尝试添加此属性 spring.datasource.driverClassName=org.postgresql.Driver

并将 spring.jpa.hibernate.ddl-auto 从更新更改为创建

【讨论】:

嗨@Aziz - 欢迎来到 Stack Overflow。在提供被 OP(原始帖子)作者接受的答案后 2.5 年以上,您的答案似乎没有添加任何新内容,或者您​​认为有,那么请编辑接受的答案以添加您的新见解。

以上是关于Spring Boot 不在 Postgres 中创建表的主要内容,如果未能解决你的问题,请参考以下文章

序列不存在 - Postgres/Spring Boot

在 Spring Boot 中使用 Copy 命令从 Postgres 导出数据

如何使用 Spring Boot JPA 在 Postgres 中存储几何点?

Spring Boot + Hibernate + Postgres - 不创建表

为啥 spring-boot 和 postgres 连接会在一段时间后断开?

在 postgres spring-boot + eclipselink 中保存为 JSON 数据类型的替代解决方案