È ansible? Posso specificarlo sull’URL di connessione? Come farlo?
So che questo è stato già risposto, ma mi sono imbattuto nello stesso problema cercando di specificare lo schema da utilizzare per la riga di comando di liquibase.
Aggiornamento A partire da JDBC v 9.4 è ansible specificare l’url con il nuovo parametro currentSchema in questo modo:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Appare basato su una patch precedente:
Quale URL proposto è così:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
A partire dalla versione 9.4 , è ansible utilizzare il parametro currentSchema
nella stringa di connessione.
Per esempio:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
Se è ansible nel proprio ambiente, è ansible anche impostare lo schema predefinito dell’utente sullo schema desiderato:
ALTER USER user_name SET search_path to 'schema'
Non credo che ci sia un modo per specificare lo schema nella stringa di connessione. Sembra che tu debba eseguire
set search_path to 'schema'
dopo aver effettuato la connessione per specificare lo schema.
Ho inviato una versione aggiornata di una patch al driver JDBC PostgreSQL per abilitarla qualche anno fa. Dovrai compilare il driver JDBC PostreSQL dal sorgente (dopo aver aggiunto la patch) per usarlo:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
Non dimenticare SET SCHEMA 'myschema'
che potresti utilizzare in una dichiarazione separata
SET SCHEMA ‘value’ è un alias per il valore SET search_path TO. È ansible specificare solo uno schema utilizzando questa syntax.
E dal 9.4 e possibilmente versioni precedenti sul driver JDBC, esiste il supporto per il setSchema(String schemaName)
.
DataSource
– setCurrentSchema
Quando si crea un’istanza di un’implementazione DataSource
, cercare un metodo per impostare lo schema corrente / predefinito.
Ad esempio, nella chiamata alla class 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_" ); // <----------