web-dev-qa-db-ja.com

h2-browserを使用してplayプロジェクトデータベースにアクセスする

Playフレームワークプロジェクトのh2-browserを介してmemデータベースにアクセスするのに問題があります。

以下の構成では、正しいと思います(明らかにそうではありません!)h2ブラウザーを取得していますが、いくつかの移行を適用したにもかかわらず、テーブルがありません(つまり、スキーマのほかに)。

ここで何が欠けていますか?前もって感謝します。

conf/application.conf:

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.user=sa
db.default.password=""

conf

25
nunos

インメモリデータベースを使用している場合、実際には2つの異なるデータベースにアクセスしています(ただし、パスは同じです)。 2つの解決策があります。

  1. 最初にコンソールから裸の「play」コンソールを起動し、h2-browserを実行し、最後にアプリを実行します(同じplayコンソール内)
  2. H2を サーバーモード で実行します。このアプローチの追加の利点は、DBがファイルに保存されているため、アプリを再起動するたびにデータが失われないことです。次に、次のようなパスを使用して、多くのポイントから(「スタンドアロン」H @ブラウザまたはその他のGUIからも)このデータベースにアクセスできます。

Unix(~はあなたのホームディレクトリを意味します)

db.default.url="jdbc:h2:tcp://localhost/~/some/path/to/MyPlayDB"

またはWindows

db.default.url="jdbc:h2:tcp://localhost/c:/some/path/to/MyPlayDB"

プロダクションモードで最高のパフォーマンスを得るには、組み込みモードに戻す価値がありますが、開発段階では、そのソリューションは十分に優れている必要があります(MySQLの例よりも高速です)

25
biesior

H2 Webコンソール を介してデータベースのコンテンツを参照するには、sameを介してWebコンソールとPlayアプリケーションの両方を起動します。 Playコンソール:

  1. 最初に、TypesafeActivatorを実行してPlayコンソールに入ります。
    ~/Projects/play-app $ activator
  2. Webコンソールを起動します。
    [play-app] $ h2-browser
    これにより、ブラウザでH2コンソールインターフェイスが開きます。
  3. Playアプリを実行します。
    [play-app] $ run
  4. ブラウザでPlayアプリにアクセスします。これにより、PlayアプリケーションはインメモリH2データベースに接続し、デフォルトのデータがある場合はそれを初期化します。
  5. ブラウザでH2Webコンソールにログインして、データベースの内容を調べます。保存できる次の設定を使用します(たとえば、Play-App In-Memory Database)後で簡単にアクセスできるようにする:
    • ドライバークラス:org.h2.Driver
    • JDBC URL:jdbc:h2:mem:play
    • ユーザー名:sa
    • パスワード:<blank>

上記の設定は実際の構成と一致する必要があることに注意してください(db.default.url 等々)。

20
Martin