未在指定架构中创建表

Posted

技术标签:

【中文标题】未在指定架构中创建表【英文标题】:Tables are not created in the specified schema 【发布时间】:2016-08-13 10:17:29 【问题描述】:

我正在尝试将 spring boot 与 postgres db 集成。 一切正常,除了表是在公共模式中创建的,即使我在 application.properties 中指定了特定模式

spring.datasource.schema=AngSpring

application.properties

spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.database.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/NGP_DB
spring.datasource.schema=AngSpring
spring.datasource.username=jdbcusr
spring.datasource.password=password

您可以在 postgres db 屏幕截图中看到 task_list 表是在“公共”架构下创建的。根据属性文件,它应该属于“AngSpring”模式。

如果我在代码中做错了什么,请纠正我。

【问题讨论】:

您使用的是哪个 Spring Boot 版本? org.springframework.bootspring-boot-starter-parent1.1.3.RELEASE 【参考方案1】:

我猜spring.datasource.schema 属性用于指定concrete schema script file 在您的应用程序中的位置以生成数据库,因此您应该删除它。

相反,您似乎想使用 Hibernate 从您的实体中猜测的那个,并将其放在您的 postgres 数据库中的特定模式位置。改用 url 中的架构:

 spring.datasource.url=jdbc:postgresql://localhost:5432/NGP_DB?currentSchema=AngSpring

另请参阅:

Is it possible to specify schema when connecting to postgres with JDBC?

【讨论】:

以上是关于未在指定架构中创建表的主要内容,如果未能解决你的问题,请参考以下文章

防止用户在 H2 中创建表

数据库中创建表(包括创建主键,外键,非空列,唯一)

从公共架构中撤消特权“创建表”,但不是从定制架构中撤消

MySQL中创建表指定存储引擎

在配置单元中创建表时向列添加默认值

Spring Boot 不在 Postgres 中创建表