¿Es posible especificar el esquema cuando se conecta a postgres con JDBC?
Es posible? ¿Puedo especificarlo en la URL de conexión? ¿Cómo hacer eso?
7 answers
Sé que esto ya fue respondido, pero me encontré con el mismo problema al intentar especificar el esquema a usar para la línea de comandos de liquibase.
Actualización A partir de JDBC v9.4 puede especificar la url con el nuevo parámetro currentSchema de la siguiente manera:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Aparece basado en un anterior parche:
Qué url propuesta es así:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-06 14:53:04
A partir de la versión 9.4, puede usar el parámetro currentSchema
en su cadena de conexión.
Por ejemplo:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-20 10:57:53
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'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-15 15:11:41
No creo que haya una manera 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-12 20:29:45
Envié una versión actualizada de un parche al controlador JDBC de PostgreSQL para habilitar esto hace unos años. Tendrá que compilar el controlador JDBC de PostreSQL desde el código fuente (después de agregar el parche) para usarlo:
Http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-30 19:55:25
DataSource
– setCurrentSchema
Al instanciar una DataSource
implementación, busque un método para establecer el esquema actual / predeterminado.
Por ejemplo, en el PGSimpleDataSource
clase llamada 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_" ); // <----------
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-31 03:04:48
No te olvides SET SCHEMA 'myschema'
que podría utilizar en una declaración separada
SET SCHEMA 'value' es un alias para SET search_path A value. Sólo uno el esquema se puede especificar usando esta sintaxis.
Y desde la versión 9.4 y posiblemente versiones anteriores en el controlador JDBC, hay soporte para setSchema(String schemaName)
método.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-19 19:46:11