問題タブ [playframework-evolutions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
279 参照

scala - 異なるサブプロジェクトでの Play フレームワークの進化

異なるサブプロジェクトを持つ Play Framework 2.2 プロジェクトがあります。これらのサブプロジェクトの 1 つだけが SQL 進化スクリプトを持っていましたが、すべてが正常に機能しました。

現在、SQL 進化スクリプトを使用して別のサブプロジェクトを導入しようとしていますが、それらの間の依存関係を定義したり、サブプロジェクト (論理的に属する場所) に保持したまま両方を実行したりする方法がわかりません。

では、進化スクリプトを異なるサブモジュールに配置し、それらの間の依存関係を考慮してすべてを実行するにはどうすればよいでしょうか?

ありがとう!

0 投票する
1 に答える
554 参照

oracle - Play フレームワーク: Oracle のデータベースの進化を可能にする

play フレームワークにバグがあります。このバグにより、play_evolutionsOracle データベースのインスタンス化ができません。この質問で述べたように、play_evolutionsテーブルを手動で生成するために次のスクリプトを使用しています。

テーブルを手動で生成すると、進化が適用されますが、プログラムは次のスタック トレースで停止します。

0 投票する
0 に答える
143 参照

scala - Play: 特定のテーブルをエボリューションによって管理されないようにしますか?

MySQL インスタンス上に Scala Play アプリがあります。進化をconf/evolutions/$db/$step.sqlファイルとして保存します。ただし、一部のテーブルは動的です。つまり、スキーマは Play アプリの実行中に変更される可能性があります。これらのテーブルを Play の進化フレームワークから除外する最善の方法は何ですか?

いくつかの選択肢がありますが、特にエレガントに見えるものはありません。

1) 問題のあるすべてのテーブルを、evolutions プラグインが無効になっている別のデータベースに移動します。現在のデータベースからも外部キー制約を持つすべての関連テーブルを移動する必要があるため、これはそれほど素晴らしいことではありません。

2) 何らかの方法で Play の進化フレームワークをオーバーライドする - 残念ながら、Play の進化フレームワークはモジュール化されておらず、拡張可能でもありません。def onUp(tableName: String)Scala または Java のフックがいくつかあり、それをオーバーライドできることを期待していましdef onDown(tableName: String)たが、Play の進化フレームワークにはそのような優れた抽象化がなく、非常にモノリシックに見えます。

3) Play が という名前のテーブルにエントリを作成することは知ってplay_evolutionsいます。そのテーブルをアプリから変更してonStart、問題のあるすべてのテーブル関連のものを手動で削除できます。それは機能しますが、非常にハックであり、Play の内部表現/スキーマ変更の処理に強く依存しています。

4)問題のあるすべてのテーブルSQLステートメントを次の場所に移動するだけconf/evolutions/$db/ignore_evolution_$step.sqlです-このようにして、これらのテーブルは進化フレームワークの注意深い目から外れていますが、基本的には独自のフレームワークをロールしてこれらのファイルを解析して実行する必要があります.

5) 他に見逃したことはありますか?

0 投票する
1 に答える
179 参照

postgresql - Play Framework 2.3 ラン ドライバー固有の進化

ローカル開発とテストでは、メモリ内 h2 ドライバーを使用しています。本番環境では、postgresql ドライバーを使用しています。postgresql のためだけに進化クエリを実行する必要があるという問題があります。これを行う方法はありますか?ありがとう!

0 投票する
0 に答える
108 参照

mysql - Play フレームワークは、scala テンプレートが変更された場合でも、evolution db スクリプトを実行します

A、B、C、D がモデルであるとします。A は D と 1 対多の関係にあります。B は D と 1 対多の関係にあります。B は c と 1 対多の関係にあります。この設計では、B に複数の多対 1 の関係があります。B に多対 1 の関係が 1 つしかない場合はいつでも、正常に機能します。しかし、B に多対 1 の関係を追加すると、scala テンプレートが変更されても、play フレームワークは進化 db スクリプトを実行します。

これを解決するには?

ありがとう。

0 投票する
2 に答える
1888 参照

playframework - Play Framework 2.3 データベースをリセットするには?

Evolutions に関するPlay 2.3.x のドキュメントでは、

ただし、開発モードでは、開発データベースを破棄して、すべての進化を最初から再適用する方が簡単な場合がよくあります。

ただし、これを行う方法についての指示はありません。これを行うために使用できるアクティベーターコマンドはありますか? 進化をリセットして再適用するにはどうすればよいですか?

ありがとう!

更新: DBを手動でいじる必要はありませんが、それが唯一の方法のようです

0 投票する
2 に答える
1112 参照

testing - テスト環境でプレイ フレームワークの進化を適用する

Play フレームワーク jpa を次のように設定しています。

application.conf で:

persistence.xml:

私はこのようにテストでプレイを開始しています:

このプロジェクトの実行はうまくいきますが、データベースの進化が不足しているため、テストは失敗します!

テスト環境で Play Framework の進化を有効にするにはどうすればよいですか?

休止状態 3.6 を使用しています