Можно ли указать схему при подключении к postgres с помощью JDBC?
возможно ли это? Могу ли я указать его в URL-адресе соединения? Как это сделать?
7 ответов
Я знаю, что на это уже ответили, но я только что столкнулся с той же проблемой, пытаясь указать схему для командной строки liquibase.
обновление По состоянию на JDBC V9.4 вы можете указать url-адрес с новым параметром currentSchema следующим образом:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
появляется на основе ранее патч:
какой предлагаемый url-адрес выглядит так:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
по состоянию на версия 9.4 можно использовать в строке подключения.
например:
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
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_" ); // <----------
Не забудьте SET SCHEMA 'myschema'
который вы могли бы использовать в отдельном заявлении
SET SCHEMA 'value' - это псевдоним для SET search_path to value. Единственный схема может быть задана с помощью этого синтаксиса.
и поскольку 9.4 и, возможно, более ранние версии драйвера JDBC, существует поддержка setSchema(String schemaName)
метод.