0

スキーマを作成し、Maven liquibase プラグインを介して入力しました。

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>2.0.5</version>
    <configuration>
        <propertyFile>src/main/resources/db/config/db.config.properties</propertyFile>
        <changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>
    </configuration>
</plugin>

プロパティ ファイル:

driver: org.hsqldb.jdbcDriver
#HSQLDB Embedded in file
url: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile
username: SA
password:

呼び出し時の出力に見られるようにmvn liquibase:update

[INFO] Executing on Database: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile
INFO 24.04.13 10:00:liquibase: Successfully acquired change log lock
INFO 24.04.13 10:00:liquibase: Creating database history table with name: DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: Reading from DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: Reading from DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: ChangeSet src/main/resources/db/changelog/db.changelog-1.0.xml::1::sav ran successfully in 7ms
INFO 24.04.13 10:00:liquibase: ChangeSet src/main/resources/db/changelog/db.changelog-1.0.xml::2::sav ran successfully in 3ms
INFO 24.04.13 10:00:liquibase: Successfully released change log lock
INFO 24.04.13 10:00:liquibase: Successfully released change log lock

db.changelog-master.xml内容:

 <include file="src/main/resources/db/changelog/db.changelog-1.0.xml"/>

db.changelog-1.0.xml内容:

 <changeSet id="1" author="sav">
        <createTable tableName="testTable">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="boolean" defaultValueBoolean="true"/>
        </createTable>
    </changeSet>

    <changeSet id="2" author="sav">
        <insert tableName="testTable">
            <column name="id" value="1"/>
            <column name="name" value="First String"/>
        </insert>
        <insert tableName="testTable">
            <column name="id" value="2"/>
            <column name="name" value="Second String"/>
            <column name="active" value="false"/>
        </insert>
    </changeSet>

すべて問題ないようです。ここで、src/main/resources/db/hsqldb/フォルダーに移動して、3 つのファイルを確認します。

dataFile.log
dataFile.properties
dataFile.script

CREATE TABLE testTableしかし、 .dl ファイルに DDL ステートメントがありませんdataFile.script。次に Intelli IDEA でデータソース プラグインを構成します (set jdbc hsql driver, url: jdbc:hsqldb:file:/src/main/resources/db/hsqldb/dataFile, user: sa )。それを接続し、クエリを呼び出します:

SELECT * FROM   INFORMATION_SCHEMA.SYSTEM_TABLES;
  1. 作成しようとしているテーブルが表示されません。
  2. 各テーブルの hsqldb_type フィールドの値は MEMORY です。似たようなファイルになると思います。

何か案は?:)

PS: 1. Maven リポジトリは最初の検索結果としてHSQLDBを返し、その最新バージョンは 1.8.0.10 です。実際には、2.2.9 バージョンのHSQLDB DATABASEを使用する必要がありました。テーブル作成の問題を解決しました。2. ファイルへの絶対パスと ';ifexists=true' プロパティを使用して、IDEA データソース プラグインの既存のデータベースに接続する必要がありました。その結果、プロパティ ファイル内の URL 接続文字列は、プラグインで使用されているものとは異なります。

4

2 に答える 2

1

ファイル パスの使用には注意が必要です。

これは相対パスです:

driver: org.hsqldb.jdbcDriver
#HSQLDB Embedded in file
url: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile

これは、現在のドライブ内の絶対パスです。

Next in Intelli IDEA I configure datasource plugin (set jdbc hsql driver, url: jdbc:hsqldb:file:/src/main/resources/db/hsqldb/dataFile, user: sa )

絶対パスを使用してみてください。

それとは別に、既存のデータベースで物事をチェックしようとして;ifexists=true、接続 URL に追加することにより、データベースが存在することを明示的に要求して接続します。

Liquibase がデータベースを正しくシャットダウンするかどうかは不明であるため、Liquibase 接続 URL にプロパティを追加して、データが完全に書き込まれるようにすることができます;hsqldb.write_delay=false。このプロパティに HSQLDB 2.x を使用していると想定しています。

于 2013-04-24T08:24:13.507 に答える