私は単にapplication.propertiesに何も指定せずにmvn spring:runで起動したときにspring-bootが作成する組み込みH2データベースのH2データベースの内容を見ようとしています。 Hibernate JPAがテーブルを作成しているのがわかりますが、データベースの下のURLでh2コンソールにアクセスしようとすると、テーブルがありません。
http://localhost:8080/console/
私はこのような提案を見ます: Springによって始められた埋め込みH2データベースの内容を見る
しかし、推奨されているXMLをどこで起動するかわからないし、たとえ行ったとしても、外部データベースが設定されたときにh2consoleをもう使用できないようにするには、これを処理する必要があります。ある種の条件付きコードを使って(あるいは、MavenプロファイルがアクティブになっているときにH2だけを含めるという最も理想的な場合には、springが自動的にそれを処理するようにする)ことができます。
H2コンソールを起動時に動作させる方法(およびspringが使用しているjdbc接続文字列が何であるかを調べる方法)を示すサンプルコードがありますか。
これで、H2コンソールがH2と一緒にスプリングブートで動作するようになりました。これが正しいかどうかはわかりませんが、他に誰も解決策を提示していないため、これを実行するのが最善の方法であることを示唆します。
私の場合は、H2コンソールを起動するときに入力するものがあるように、データベースの特定の名前を選択しました(この場合は "AZ")。 spring.jpa.database-platformを省略しても問題はないようですが、これらすべてが必要であると思います。
Application.propertiesで、
spring.datasource.url=jdbc:h2:mem:AZ;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
Application.Java(またはいくつかの設定)で:
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}
その後、{server}/console /にあるH2コンソールにアクセスできます。これをJDBC URLとして入力します。jdbc:h2:mem:AZ
Spring Boot 1.3.0.M3
の時点で、H2コンソールは自動設定可能です。
前提条件は次のとおりです。
Spring Boot Dev Toolsを使用しなくても、spring.h2.console.enabled
をtrue
に設定することで、コンソールを自動設定することができます。
すべての詳細については、 this ドキュメントの一部をチェックしてください。
このように設定すると、コンソールにアクセスできるようになります。 http:// localhost:8080/h2-console /
このトピックに関する素晴らしいチュートリアルを見つけました。
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
基本的に私にとって正しいJDBC URLはjdbc:h2:mem:testdb
でした。
ステップバイステップガイドと同様の答え。
pom.xml
またはbuild.gradle
にDeveloper tools依存関係を追加しますMaven
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
Gradle
dependencies {
compile("org.springframework.boot:spring-boot-devtools")
}
http://localhost:8080/h2-console/
からdbにアクセスするjdbc:h2:mem:testdb
を指定しますhttp://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html より
H2 Webコンソール(H2ConsoleProperties):
spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.
上記の2行を私のapplication.propertiesファイルに追加するだけで、デフォルトのユーザー名(sa)とパスワード(空)を使ってH2データベースのWebコンソールにアクセスできます。
/resources/application.propertiesには以下のプロパティしかありません。このURL( http:// localhost:8080/h2-console / )を使用してスプリングブートを実行した後、H2コンソールのテーブルが表示され、テーブルデータを表示するために読み取られました。 SQLコマンド1つ、Javaコードでは、データをフェッチしている間、schema.sqlが小文字の名前を使用している場合でも、列名は大文字になります。
spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
Spring Initialzrから直接Spring Boot 2.1.1の場合:
devtoolsのデフォルトは http://127.0.0.1:8080/h2-console/ です。
devtoolsがなければ - プロパティで設定する必要があります:spring.h2.console.enabled=true spring.h2.console.path=/h2-console
あなたがそこに着いたら - JDBC URLを設定します。jdbc:h2:mem:testdb(デフォルトのものは動作しません)
Spring Bootの開発者ツールを使用している場合、デフォルトでH2コンソールが有効になっています。 /h2-console
/からアクセスできます。ログインインタフェースでは、入力JDBC URL
に値jdbc:h2:mem:testdb
を使用します。 mem
文字列に注意してください。
Spring Bootの開発者ツールを使用していない場合は、application.properties
を使用してspring.h2.console.enabled=true
でコンソールを有効にできます。これで/h2-console
の下のコンソールが有効になります。 URLを変更したい場合はspring.h2.console.path=my_console_path
を使って別のエントリを追加できます。
デフォルトのスキーマ名はtestdb
です。
詳細は Spring Boot Documentation にあります。
テーブルを取得するために必要なのは、2つのSQLファイルschema.sql(テーブル作成用)とdata.sql(作成されたテーブル用のデータ)を作成することだけです。これらのファイルはsrc/main/resourcesフォルダーに置かれます。 Spring boot autoがそれらを検出し、実行時に残りの面倒を見ます。
プロジェクトで2つ以上のDBを使用している場合は、(schema-h2.sql - h2 DBの場合、schema-Oracle.sql - Oracle DBの場合)のような特定のファイルを使用してください。 data.sqlについても同じことが言えます。
また、schema.sqlにdrop tableステートメントを最初のステートメントとして追加して、テーブルを確実に削除します。重複レコードの追加を避けるため。
スプリングブーツのリンクはこちらです。
私のapplication.propertiesは以下の通りです。
spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.jpa.hibernate.ddl-auto=none
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true
以下のリンクの手順に従うことができます。
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Spring Boot 2.0.2.RELEASEでは、POMファイルにspring-boot-starter-data-jpaとcom.h2databaseを設定するだけでは、H2コンソールを動作させることができません。以下のようにspring-boot-devtoolsを設定する必要があります。必要に応じて、この記事ではAaron Zeckoskiからの指示に従うことができます
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
H2コンソールにログインするときは、パスとしてjdbc:h2:mem:testdbを使用してください。
Spring Bootのプロパティを変更した場合はデータソースが異なる可能性がありますが、デフォルトの検索方法に苦労しているようです。それだけです。 H2にログインした後にあなたのスキーマを見るでしょう。
私がこれと同じ問題を抱えていたとき、私は非常に愚かなミスをしました。単体テストケースを実行するためにH2 DBを追加したので、pom.xml
でscope
をtest
に設定しました。 mvn spring:run
を使用してアプリケーションを実行している間、私はscope
を削除しました、そしてそれは今うまく働きます。