55

次の構成のおかげで、Spring によって開始された H2 データベースのコンテンツを Web ブラウザーで表示したいと思います。

<jdbc:embedded-database id="dataSource" type="H2" />

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:db/populateDB.sql"/>
</jdbc:initialize-database>

ログで JDBC URL を検索しました。

DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:h2:mem:dataSource;DB_CLOSE_DELAY=-1]

次のように接続フォームに入力できるようにします。

ここに画像の説明を入力

しかし残念なことに、データベースはまだ空ですが、populateDB.sql スクリプトが原因ではないはずです。

何か案が?

ありがとう!

4

7 に答える 7

20

データベース URLjdbc:h2:mem:dataSourceは、インメモリ データベースを使用していることを意味します。ここで、2 番目の Java プロセスを開始してこのデータベースに接続すると、2 つのメモリ内データベース (プロセスごとに 1 つ) を持つことになります。

既存のデータベースに接続する場合は、複数のオプションがあります。

  • 同じプロセス内からデータベースに接続します。2 番目のプロセスを開始しないでください。

  • ハードコーディングされた絶対パスを使用して永続化されたデータベースを使用します。たとえば、「jdbc:h2:/data/db/dataSource」です。

  • より複雑 / 非推奨: 2 番目のプロセスを開始すると、理論的にはサーバー モードを使用してインメモリ データベースに接続できます。ただし、これは、テストを実行したサーバーを起動する必要があることを意味します。

于 2013-07-23T07:49:44.680 に答える
17

Spring Boot を使用する場合、H2 Console Servlet を次のように登録できます。

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    registration.addInitParameter("webAllowOthers", "true");
    return registration;
}

コンソールをリモートで使用できるようにする場合、重要な行はaddInitParameterto を に設定する"webAllowOthers"こと"true"です。

于 2015-10-25T01:57:53.250 に答える
14

xml jdbc 構成でembeddebを使用する場合、データベースのデフォルト名は「testdb」です

URL接続で使用してみてください:

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
于 2013-07-25T09:55:37.440 に答える