57

私はソース パス (src/main src/test) に Maven 規則を使用しており、src/main/resources/scripts に SQL スクリプトがあります。

H2 メモリでアプリを実行したいのですが、jdbc url を使用してデータベースを初期化したいと考えています。

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

私の問題は、この相対パス ( src/main/... ) が機能しないことと、 init=runscript コマンドが何も対象としていない場合に H2 がクラッシュしないことです。

これを機能させるために使用する必要があるパスを誰かが知っていますか?

ありがとう

4

2 に答える 2

116

次の URL を使用できます。
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

それを使用すると、クラスパスからスクリプトを実行できます。そのため、maven (または他の何か) プロジェクトに src/main/resources/scripts または src/test/resources/scripts を配置するだけです。

于 2011-12-13T09:22:59.337 に答える
2

すべてが機能することを確認するために、初心者には絶対パスを使用することをお勧めします。その後、クラスパスを確認します。たとえば、は、クラスがコンパイルされる場所であり、クラスパス上にあるとbin/main/resources/scripts/create.sql仮定します。bin

srcソースが存在する場所は通常、クラスパス上にないため、これが問題の原因である可能性があります。

于 2010-12-20T13:47:02.950 に答える