2

ユニットテスト用のインメモリデータベースとしてH2を使用することにしました。私は春を通してすべてを一緒に配線しています。すべてが正常に機能しているようです。DBがロードされ、ddlsqlファイルが実行されます。dmlsqlも実行されます(またはそう思われます)。

データベースにレコードを作成し、それが適切に永続化されていることを取得して検証するテストを実行できます。つまり、これはddlスクリプトが正常に実行されたことを示しています。

問題は、dmlスクリプトを介して挿入されたレコードを受信しようとすると、何も取得されないことです。

同じ挿入ステートメントをファイルに2回入れてみましたが、実際に一意の制約エラーが発生し、実行中であることがわかります...しかし、何らかの理由で永続化されていません。

DDL:

DROP TABLE IF EXISTS `schema`.`region` ;CREATE  TABLE IF NOT EXISTS `schema`.`region` (
  `region_id` INT(11) NOT NULL ,
  `name` VARCHAR(56) NOT NULL ,
  `description` VARCHAR(512) NULL DEFAULT NULL ,
  PRIMARY KEY (`region_id`) );

DML:

INSERT INTO `schema`.`region` (`region_id`, `name`, `description`) VALUES (1001, 'TEST', 'TESTING');

URL:

jdbc:h2:file:db_test;MODE=MYSQL;INIT=create schema if not exists test_db\\;runscript from 'classpath:test_ddl.sql'\\;runscript from 'classpath:test_dml.sql'

どんな助けでも役に立ちます。

ありがとう

4

1 に答える 1

1

データベースファイルはどこに保存されていますか?を参照してください。FAQで。使用したデータベースURLを使用しjdbc:h2:file:db_testて、ファイルは現在の作業ディレクトリに保存されます。アプリケーションを開始する場所に応じて、これは別の場所であるため、別のデータベースが使用されます。

代わりに使用することをお勧めしますjdbc:h2:~/db/test_db...

H2をインメモリデータベースとして使用することにしている

実際に永続データベースを使用しています。データベースのURLの概要を参照してください。

于 2012-09-08T12:19:07.430 に答える