web-dev-qa-db-ja.com

Spring-bootはH2データベースにschema.sqlとdata.sqlを投入します

H2メモリデータベースで動作するようにSpring-bootを設定しましたapplication.propertiesファイルは/ configディレクトリにあります

のように見え、このファイルは処理されます

spring.datasource.url=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.path=/myconsole
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.datasource.schema=schema.sql
spring.datasource.data=data.sql

このファイルは処理され、コンソールは/ myconsoleに表示されますが、schema.sqlとdata.sqlは処理されず、dbは空です。 schema.sqlとdata.sqlファイルを/ configと/ src/main/resoucesの両方に配置しました

SQL言語の説明は正しく、コンソール入力を使用してテーブルにデータを入力できます。

もう1つの奇妙なことは、dbにspring.datasource.url = jdbc:h2:mem:mydbという名前を付けていても、Springコンソールが別のデータベースtestdb osjdeEmbeddedDatabaseFactory ---埋め込みデータベースを開始する:url = 'jdbc:h2:mem:testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = false '、username =' sa '

H2データベースを正しくロードする方法は?前もって感謝します ....

10
user3687431

問題を解決しました。

Spring Bootアプリには独自のJDBC依存関係が必要です

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

私が持っていたブート以外の依存関係だけでは十分ではありません。

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
</dependency>

"spring-boot-starter-jdbc"依存関係がないと、ファイル "application.properties"の "spring.datasource.url"設定は処理されません。そのファイルは実際に処理されますが、jdbc設定は処理されません。 Springブートはメモリ内に独自のtestdbを作成し、アプリケーションを閉じた後にデータを破壊します。

8
user3687431