仕事へのLiquiBaseを開始する前に、PostgresのDBスキーマを作成する方法?

GO:

私は、スタンドアロンのアプリケーションを持っています。これは、Java、春ブート、postgresの上だし、LiquiBaseをしました。

私は私のアプリを展開し、その他すべてのテーブルを作成する必要がありLiquiBaseをする必要があります。しかし、それは公の場ではないカスタムスキーマにそれを行う必要があります。LiquiBaseを(databasechangelogとdatabasechangeloglock)のすべてのサービステーブルがあまりにもカスタムスキーマにする必要があります。どのように私は仕事にLiquiBaseを開始する前にDBの私のスキーマを作成することができますか?それは展開だとき、私は、設定またはいくつかのように、私のアプリの内部でそれを行う必要があります。DBへの手動介入なし。

application.properties:

spring.datasource.jndi-name=java:/PostgresDS
spring.jpa.properties.hibernate.default_schema=my_schema
spring.jpa.show-sql = false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.datasource.continue-on-error=true
spring.datasource.sql-script-encoding=UTF-8

liquibase.change-log = classpath:liquibase/changelog-master.yaml
liquibase.default-schema = my_schema

UPD:

ときLiquiBaseを開始、それは二つのテーブルdatabasechangelogsと1つの以上のテーブルを作成します。その後、作業を開始LiquiBaseを。しかし、私は中LiquiBaseをしたいliquibase.default-schema = my_schema例外はliquibase.exception.LockExceptionです::liquibase.exception.DatabaseException:ERROR:スキーマ「MY_SCHEMA」は存在しませんが、それが仕事にするときLiquiBaseを開始存在していないし、それをエラー

私は、カスタムスキーマではなく、公共の場でLiquiBaseを仕事をしたいです:

liquibase.default-schema = my_schema

LiquiBaseをはそれを行うことができます前に、しかし、スキーマを作成する必要があります。それはまだ開始されていないと起動することがスキーマを必要とするためLiquiBaseをこれを行うことはできません。悪循環。

GO:

私は私のapplication.propertiesと解決策を見つけました。

org.springframework.jdbc.datasource.init.ScriptUtils LiquiBaseを前に働いていました。

ログ:

14:11:14,760 INFO  [org.springframework.jdbc.datasource.init.ScriptUtils] 
(ServerService Thread Pool -- 300) Executing SQL script from URL 
[vfs:/content/app.war/WEB-INF/classes/schema.sql]

14:11:14,761 INFO  [org.springframework.jdbc.datasource.init.ScriptUtils] 
(ServerService Thread Pool -- 300) Executed SQL script from URL 
[vfs:/content/app.war/WEB-INF/classes/schema.sql] in 1 ms.

14:11:14,912 ERROR [stderr] (ServerService Thread Pool -- 300) INFO 9/27/18 
2:11 PM: liquibase: Successfully acquired change log lock

14:11:15,292 ERROR [stderr] (ServerService Thread Pool -- 300) INFO 9/27/18 
2:11 PM: liquibase: Reading from my_schema.databasechangelog

14:11:15,320 ERROR [stderr] (ServerService Thread Pool -- 300) INFO 9/27/18 
2:11 PM: liquibase: Successfully released change log lock

私はちょうど置くschema.sqlCREATE SCHEMA IF NOT EXISTS my_schema;資源のディレクトリに、すべてが正常に動作し。

すべての助けをありがとう。

更新:それは春のブート1.xのための作業です あなたは春ブーツ2を使用している場合と、あなたは、プロパティファイルでschema.sqlを有効にする必要がありますspring.datasource.initialization-mode=alwaysでより多くの情報春ブーツ-初期データのロード

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=189239&siteId=1