出来ますか?接続URLで指定できますか?どうやってするか?
私はこれがすでに答えられていることを知っていますが、liquibaseコマンドラインに使用するスキーマを指定しようとして同じ問題に出くわしました。
UpdateJDBC v 9.4 以降、次のように新しいcurrentSchemaパラメーターでURLを指定できます。
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
以前のパッチに基づいて表示されます。
どのようなURLを提案しましたか:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
バージョン9.4 の時点で、接続文字列でcurrentSchema
パラメーターを使用できます。
例えば:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
ご使用の環境で可能であれば、ユーザーのデフォルトスキーマを目的のスキーマに設定することもできます。
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
DataSource
– setCurrentSchema
DataSource
実装をインスタンス化するとき、現在/デフォルトのスキーマを設定するメソッドを探します。
たとえば、 PGSimpleDataSource
クラス呼び出し 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_" ); // <----------
指定しない場合、Postgresはpublic
という名前のスキーマへの接続を試みます。
SET SCHEMA 'myschema'
を忘れないでください。これは別のステートメントで使用できます。
SET SCHEMA 'value'は、SET search_path TO valueのエイリアスです。この構文を使用して指定できるスキーマは1つだけです。
また、JDBCドライバーの9.4およびそれ以前のバージョン以降、 setSchema(String schemaName)
メソッドのサポートがあります。
Go with "sql.DB"(アンダースコア付きのsearch_path
に注意してください):
postgres://user:password@Host/dbname?sslmode=disable&search_path=schema