回答:
私はこれが既に回答されていることを知っていますが、liquibaseコマンドラインに使用するスキーマを指定しようとして同じ問題に遭遇しました。
更新 JDBC v 9.4では、次のように新しいcurrentSchemaパラメータでURLを指定できます。
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
以前のパッチに基づいて表示されます:
提案されたURLはそうです:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
setSchema
接続を作成した後、JDCB メソッドを使用してみてください。最近のpostgresドライバーで動作します。
postgresql-9.4.1209.jdbc42.jar
、9.5
データベースと?currentSchema=myschema
構文と一緒に動作しました。
接続文字列でスキーマを指定する方法があるとは思いません。実行する必要があるようです
set search_path to 'schema'
スキーマを指定するために接続が行われた後。
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
数年前にこれを可能にするために、更新されたバージョンのパッチを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
データベース内で指定されたスキーマを使用します。マニュアルのセクション5.9.2 The Public Schemaを参照してください。帽子のマニュアルを引用するには:
前のセクションでは、スキーマ名を指定せずにテーブルを作成しました。デフォルトでは、このようなテーブル(およびその他のオブジェクト)は自動的に「public」というスキーマに入れられます。すべての新しいデータベースには、そのようなスキーマが含まれています。
search_path
SET SCHEMA 'myschema'
別のステートメントで使用できることを忘れないでください
SET SCHEMA 'value'は、SET search_path TO値のエイリアスです。この構文を使用して指定できるスキーマは1つだけです。
また、JDBCドライバーの9.4および場合によっては以前のバージョンから、このsetSchema(String schemaName)
メソッドがサポートされています。
これはすでに回答されています:
jdbc:postgresql:// localhost:5432 / mydatabase?currentSchema = myschema
以前の回答と同様に、上記の接続文字列はそのまま機能します。
チェックしましたが、問題ありません:https : //youtu.be/m0lBUHSLkNM?t=79
(受け入れられた回答は8年前に与えられましたが、それは1年前に編集されました...)