가능합니까? 연결 URL에 지정할 수 있습니까? 그렇게하는 방법?
가능합니까? 연결 URL에 지정할 수 있습니까? 그렇게하는 방법?
답변:
나는 이것이 이미 답변되었다는 것을 알고 있지만 liquibase 명령 줄에 사용할 스키마를 지정하려고하는 것과 동일한 문제가 발생했습니다.
업데이트 JDBC V의로 9.4 그렇게 같은 새로운 currentSchema 매개 변수를 사용하여 URL을 지정할 수 있습니다 :
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
이전 패치를 기반으로 나타납니다.
제안 된 URL은 다음과 같습니다.
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
setSchema
연결을 만든 후 JDCB 방법을 사용해보십시오 . 최근 postgres 드라이버와 함께 작동합니다.
postgresql-9.4.1209.jdbc42.jar
함께 작동했습니다 . 9.5
?currentSchema=myschema
연결 문자열에 스키마를 지정하는 방법이 없다고 생각합니다. 실행 해야하는 것 같습니다.
set search_path to 'schema'
연결 후 스키마를 지정합니다.
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
몇 년 전 업데이트를 위해 PostgreSQL JDBC 드라이버에 업데이트 된 버전의 패치를 제출했습니다. 패치를 추가 한 후 소스에서 PostreSQL JDBC 드라이버를 빌드하여 사용해야합니다.
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
DataSource
– setCurrentSchema
인스턴스화 할 때 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"이라는 스키마에 자동으로 저장됩니다. 모든 새 데이터베이스에는 이러한 스키마가 포함됩니다.
search_path
SET SCHEMA 'myschema'
별도의 명세서에서 사용할 수있는 것을 잊지 마십시오
SET SCHEMA 'value'는 SET search_path TO 값의 별명입니다. 이 구문을 사용하여 하나의 스키마 만 지정할 수 있습니다.
그리고 JDBC 드라이버의 9.4 및 이전 버전부터 setSchema(String schemaName)
메소드를 지원합니다 .
이것은 이미 답변되었습니다 :
jdbc : postgresql : // localhost : 5432 / mydatabase? currentSchema = myschema
이전 답변과 마찬가지로 위의 연결 문자열이 작동합니다.
확인했는데 괜찮습니다 : https://youtu.be/m0lBUHSLkNM?t=79
(응답은 8 년 전에 제공되었지만 1 년 전에 편집되었습니다.)