Возможно ли это? Могу ли я указать его в URL-адресе соединения? Как это сделать?
Я знаю, что на этот вопрос уже был дан ответ, но я столкнулся с той же проблемой, пытаясь указать схему, используемую для командной строки liquibase.
Обновление Начиная с JDBC v 9.4 вы можете указать URL-адрес с помощью нового параметра currentSchema, например:
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 в строке подключения.
currentSchema
Например:
Если это возможно в вашей среде, вы также можете установить схему по умолчанию для пользователя в соответствии с желаемой схемой:
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/
DataSource
setCurrentSchema
При создании экземпляра реализации DataSource ищите метод для установки текущей схемы / схемы по умолчанию.
Например, при вызове класса PGSimpleDataSource setCurrentSchema.
PGSimpleDataSource
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.
public
Не забудьте SET SCHEMA 'myschema', который вы можете использовать в отдельном операторе
SET SCHEMA 'myschema'
SET SCHEMA 'value' - это псевдоним для значения SET search_path TO.С помощью этого синтаксиса может быть указана только одна схема.
А начиная с версии 9.4 и, возможно, более ранних версий драйвера JDBC, поддерживается метод setSchema(String schemaName).
setSchema(String schemaName)
In Go с «sql.DB» (обратите внимание на search_path с подчеркиванием):
search_path
postgres://user:password@host/dbname?sslmode=disable&search_path=schema