Возможно ли это? Могу ли я указать его на URL-адресе подключения? Как это сделать?
Можно ли указать схему при подключении к postgres с JDBC?
Ответ 1
Я знаю, что на этот вопрос уже был дан ответ, но я столкнулся с той же проблемой, пытаясь указать схему, используемую для командной строки liquibase.
Обновление Начиная с JDBC v 9.4, вы можете указать URL с новым параметром currentSchema следующим образом:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Появляется на основе более раннего патча:
Какой предложенный URL-адрес выглядит так:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
Ответ 2
Начиная с версии 9.4, вы можете использовать параметр currentSchema
в вашей строке подключения.
Например:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Ответ 3
Если это возможно в вашей среде, вы также можете установить схему по умолчанию для пользователя по желаемой схеме:
ALTER USER user_name SET search_path to 'schema'
Ответ 4
Я не верю, что есть способ указать схему в строке подключения. Кажется, вы должны выполнить
set search_path to 'schema'
после установления соединения для указания схемы.
Ответ 5
Я представил обновленную версию патча для драйвера JDBC PostgreSQL, чтобы включить это несколько лет назад. Вам нужно будет построить драйвер PostgreSQL JDBC из источника (после добавления в патч), чтобы использовать его:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
Ответ 6
DataSource
- setCurrentSchema
При создании экземпляра реализации DataSource
ищите метод для установки текущей схемы/схемы по умолчанию.
Например, PGSimpleDataSource
класса 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
.
Ответ 7
Не забывайте SET SCHEMA 'myschema'
, который вы могли бы использовать в отдельном Заявление
SET SCHEMA 'value' является псевдонимом для значения SET search_path TO. Единственный схема может быть указана с использованием этого синтаксиса.
А так как 9.4 и, возможно, более ранние версии для драйвера JDBC, существует поддержка метода setSchema(String schemaName)
.
Ответ 8
В Go с "sql.DB" (обратите внимание на search_path
с подчеркиванием):
postgres://user:[email protected]/dbname?sslmode=disable&search_path=schema