私は、スタンドアロンのアプリケーションを持っています。これは、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をこれを行うことはできません。悪循環。
私は私の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.sql
とCREATE SCHEMA IF NOT EXISTS my_schema;
資源のディレクトリに、すべてが正常に動作し。
すべての助けをありがとう。
更新:それは春のブート1.xのための作業です あなたは春ブーツ2を使用している場合と、あなたは、プロパティファイルでschema.sqlを有効にする必要がありますspring.datasource.initialization-mode=always
。でより多くの情報春ブーツ-初期データのロード