[java] JDBC로 postgres에 연결할 때 스키마를 지정할 수 있습니까?

가능합니까? 연결 URL에 지정할 수 있습니까? 그렇게하는 방법?



답변

나는 이것이 이미 답변되었다는 것을 알고 있지만 liquibase 명령 줄에 사용할 스키마를 지정하려고하는 것과 동일한 문제가 발생했습니다.

업데이트
JDBC V의로 9.4 그렇게 같은 새로운 currentSchema 매개 변수를 사용하여 URL을 지정할 수 있습니다 :

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema

이전 패치를 기반으로 나타납니다.

http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512. html

제안 된 URL은 다음과 같습니다.

jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema


답변

현재 버전 9.4 , 당신은 사용할 수있는 currentSchema연결 문자열에서 매개 변수를.

예를 들면 다음과 같습니다.

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema


답변

환경에서 가능하면 사용자의 기본 스키마를 원하는 스키마로 설정할 수도 있습니다.

ALTER USER user_name SET search_path to 'schema'


답변

연결 문자열에 스키마를 지정하는 방법이 없다고 생각합니다. 실행 해야하는 것 같습니다.

set search_path to 'schema'

연결 후 스키마를 지정합니다.


답변

몇 년 전 업데이트를 위해 PostgreSQL JDBC 드라이버에 업데이트 된 버전의 패치를 제출했습니다. 패치를 추가 한 후 소스에서 PostreSQL JDBC 드라이버를 빌드하여 사용해야합니다.

http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php

http://jdbc.postgresql.org/


답변

DataSourcesetCurrentSchema

인스턴스화 할 때 DataSource구현을 현재 / 기본 스키마를 설정하는 메소드를 찾으십시오.

예를 들어, PGSimpleDataSource수업 중setCurrentSchema .

org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource ( );
dataSource.setServerName ( "localhost" );
dataSource.setDatabaseName ( "your_db_here_" );
dataSource.setPortNumber ( 5432 );
dataSource.setUser ( "postgres" );
dataSource.setPassword ( "your_password_here" );
dataSource.setCurrentSchema ( "your_schema_name_here_" );  // <----------

스키마를 지정하지 않으면 Postgres는 기본적으로 public데이터베이스 내에 명명 된 스키마를 사용 합니다. 매뉴얼, 섹션 5.9.2 참조 공개 스키마를. 모자 매뉴얼을 인용하려면 :

이전 섹션에서는 스키마 이름을 지정하지 않고 테이블을 만들었습니다. 기본적으로 이러한 테이블 (및 기타 개체)은 “public”이라는 스키마에 자동으로 저장됩니다. 모든 새 데이터베이스에는 이러한 스키마가 포함됩니다.


답변

SET SCHEMA 'myschema'별도의 명세서에서 사용할 수있는 것을 잊지 마십시오

SET SCHEMA ‘value’는 SET search_path TO 값의 별명입니다. 이 구문을 사용하여 하나의 스키마 만 지정할 수 있습니다.

그리고 JDBC 드라이버의 9.4 및 이전 버전부터 setSchema(String schemaName)메소드를 지원합니다 .