java - example - ¿Es posible especificar el esquema cuando se conecta a postgres con JDBC?
properties postgres (7)
DataSource
- setCurrentSchema
Al instanciar una implementación de DataSource
, busque un método para establecer el esquema actual / predeterminado.
Por ejemplo, en la clase PGSimpleDataSource
, llame a 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_" ); // <----------
¿Es posible? ¿Puedo especificarlo en la URL de conexión? ¿Como hacer eso?
A partir de la 9.4 , puede usar el parámetro currentSchema
en su cadena de conexión.
Por ejemplo:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Envié una versión actualizada de un parche al controlador JDBC de PostgreSQL para habilitar esto hace algunos años. Deberá construir el controlador PostreSQL JDBC desde el origen (después de agregar el parche) para usarlo:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
No creo que haya una forma de especificar el esquema en la cadena de conexión. Parece que tienes que ejecutar
set search_path to ''schema''
después de la conexión se hace para especificar el esquema.
No olvide SET SCHEMA ''myschema''
que puede usar en un Statement separado
SET SCHEMA ''valor'' es un alias para SET valor de búsqueda TO valor. Solo se puede especificar un esquema usando esta sintaxis.
Y desde la versión 9.4 y posiblemente versiones anteriores en el controlador JDBC, existe soporte para el setSchema(String schemaName)
.
Sé que esto ya fue respondido, pero me encontré con el mismo problema al tratar de especificar el esquema que se utilizará para la línea de comandos de liquibase.
De acuerdo con esto: http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512.html
Puede especificar la url así:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
Actualización A partir de 9.4 , puede especificar la url con el nuevo parámetro currentSchema de esta manera:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Si es posible en su entorno, también puede establecer el esquema predeterminado del usuario en el esquema deseado:
ALTER USER user_name SET search_path to ''schema''