如何在 spring 启动时连接到数据库中的方案而不是 public
How to do in spring boot that connects to a scheme in a database and not to the public
我有一个 Spring Boot api 连接到 postgresql 中的数据库,在数据库中我有两个方案,一个是我自己的,一个是 public。
当插入我的方案中的 table 时,会在 public 中创建并插入那里。
我试图将我的方案名称放入实体中,但它给我一个错误并说它不存在,我不知道是否有必要这样做:
@Entity
@Table( name = "rules" , schema = "eschema1")
这是我的 application.properties:
spring.datasource.url=jdbc:postgresql://15.98.0.65:5432/database
spring.datasource.username=postgres
spring.datasource.password=
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
我看到三个解决方案:
将?currentSchema=eschema1
添加到connection URL
永久更改该用户的 search path:
alter user postgres set search_path = 'public,eschema1';
告诉您的混淆层 (=ORM) 使用您配置的架构作为表的前缀。具体是怎么做到的,我也不知道
我强烈建议您使用与 postgres
不同的用户 - 即使它只是用于测试目的。
我有一个 Spring Boot api 连接到 postgresql 中的数据库,在数据库中我有两个方案,一个是我自己的,一个是 public。 当插入我的方案中的 table 时,会在 public 中创建并插入那里。 我试图将我的方案名称放入实体中,但它给我一个错误并说它不存在,我不知道是否有必要这样做:
@Entity
@Table( name = "rules" , schema = "eschema1")
这是我的 application.properties:
spring.datasource.url=jdbc:postgresql://15.98.0.65:5432/database
spring.datasource.username=postgres
spring.datasource.password=
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
我看到三个解决方案:
将
?currentSchema=eschema1
添加到connection URL永久更改该用户的 search path:
alter user postgres set search_path = 'public,eschema1';
告诉您的混淆层 (=ORM) 使用您配置的架构作为表的前缀。具体是怎么做到的,我也不知道
我强烈建议您使用与 postgres
不同的用户 - 即使它只是用于测试目的。