2

私は play 2.0.1 で小さなアプリケーションを開発していますが、顧客のプレビューを作成するために内部 H2 データベースを使用すると非常に便利です。データベースには数行しかなく、ユーザーは 1 人か 2 人です。ラップトップでアプリをコンパイルし、テスト サーバーに展開するための tar を作成するのは非常に快適です。しかし、H2 は時々落ちるようです。私のapplication.logでこれを見つけました:

! @ 6anj14ljo - 内部サーバー エラー、リクエスト [POST /admin] ->

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: 実行例外 [[PersistenceException: クエリが SQLException をスローしました: テーブル "MANAGER" が見つかりません。

本番環境で H2 を使用することはお勧めできません。しかし、毎回 mysql を構成したくありません。このような H2 の動作の理由はどれですか?

4

2 に答える 2

5

データベースの状態を確認するために使用h2-browserし、構造が例外と同じ場合:

ターミナル/コマンドラインで

  1. play
  2. h2-browserh2-browser-新しいブラウザ ウィンドウで開きます
  3. ~run
  4. 進化を実行する
  5. でウィンドウに移動し、h2-browserあきらめたのと同じパスを使用して接続しapplication.confますdb.default.url

一方、あなたとは反対に、開発モードと本番モードで異なるデータベースを使用するのは煩わしい場合があることがわかりました。各 DB エンジンには非常に固有の事柄があり、いくつかの問題を 2 回解決する必要がありH2ますMySQL。これでは意味がありません。さらに悪いことに、アプリを開発モードで再起動するたびに、デバッグ用のサンプル データを再度入力する必要があります。たぶん、再起動の間にいくつかのレコードを追加するのを忘れたなど.

最後の問題はメソッドにGlobal オブジェクトを使用して同じテスト データのセットを挿入することで解決できますがonStart()、再起動の間、MySQL にテスト データを保持する方が快適です。

もちろん、まだ使用したい/必要がある場合は、URL からセグメントを削除してH2使用することもできます。その後、ディスクに永続化されます。file modemem

于 2012-06-25T10:39:38.850 に答える