2010-11-12 11 views

Respuesta

107

Sé que esto ya fue respondida, pero me acabo de encontrar con el mismo problema tratando de especificar el esquema a usar para la línea de comando 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 el URL de esta manera:

jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema 

actualización A partir de 9.4 puede especificar la dirección URL con el nuevo parámetro currentSchema así:

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema 
+2

Sí, pero en el momento de la redacción (finales de 2012) no forma parte del [controlador 9.1] (http://jdbc.postgresql.org/documentation/91/), consulte: [Parámetros de conexión] (http://jdbc.postgresql.org/documentation/91/connect.html#connection-parameters). – user272735

+0

¿Lo has intentado? Porque no figuraba como parte del controlador anterior pero aún funcionaba. – Hiro2k

+7

Intenté con 9.3-1101-jdbc41 y 9.1, no funciona para mí –

41

No creo que haya una forma de especificar el esquema en la cadena de conexión. Parece que tiene que ejecutar

set search_path to 'schema' 

después de que la conexión se realiza para especificar el esquema.

+1

Esto funcionó para mí, en concreto con el ejemplo "Conexión" para ejecutar: declaración 'Declaración Connection.createStatement =(); try { statement.execute ("establecer ruta de búsqueda en '" + esquema + "'"); } finally { statement.close(); } ' – romeara

+0

Hay una manera de especificar el esquema predeterminado en la cadena de conexión (jdbc uri). Ver respuestas a continuación. –

47

Si es posible en su entorno, también se puede configurar esquema predeterminado del usuario para su esquema deseado:

ALTER USER user_name SET search_path to 'schema' 
+1

Probablemente es mejor ALTERAR la base de datos para que el mismo usuario se pueda conectar a diferentes bases de datos con diferentes search_paths si es necesario: ALTER DATBASE dbname SET search_path TO public, schemaname; – Alaska

+1

gracias, me salvaste la vida. – duccom

3

No se olvide SET SCHEMA 'myschema' que se podría utilizar en un estado separado

SET SCHEMA 'valor' es un alias para el valor de SET search_path TO. Solo se puede especificar un esquema con esta sintaxis.

Y desde la versión 9.4 y posiblemente versiones anteriores en el controlador JDBC, se admite el método setSchema(String schemaName).

45

A partir del version 9.4, puede usar el parámetro currentSchema en su cadena de conexión.

Por ejemplo:

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema 
+1

¡Esta es la única! –

2

DataSource - setCurrentSchema

Cuando una instancia de una aplicación DataSource, buscar un método para establecer el esquema/predeterminado actual.

Por ejemplo, en la llamada de clase PGSimpleDataSourcesetCurrentSchema.

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_"); // <---------- 
Cuestiones relacionadas