問題タブ [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.
playframework-2.0 - Play 2.1 フレームワークが進化の変化を検出しない
@ManyToMany 結合テーブルを 2 つのモデル (この場合は User モデルと Article モデル[1]) に追加すると、Play はこれらの変更を正しく検出し、それに応じて 1.sql[2] ファイルを変更します。
ただし、この関係を使用するページを開くと、適用が必要な進化に関するメッセージは表示されず、代わりに次のエラーが表示されます。
適用する必要があるデータベース スキーマに変更を加えたことを Play が検出しないのはなぜですか?
hibernate - 場で進化させる正しい方法
私は現在、開発中のモバイルアプリのバックエンド API になるプレイアプリに取り組んでいます。
今まで、jpa.ddl を更新するように設定していましたが、すべて正常に動作していました。モデルの 1 つに新しいフィールドを追加すると、データベースが変更されます。
ただし、私は本番環境の準備を進めており、プレイのドキュメントを含め、私が読んだすべてのものには、その機能をオフにして代わりに進化を使用するように記載されています. ただし、1.sql ファイルを作成していると、いくつかの問題が発生します。
- モデルの一部として配列があり、それらがデータベースでどのように表現されているかわかりません
- モデルの一部は他のモデルのインスタンスであり、オブジェクトがデータベースでどのように表現されているかわかりません
これまでは、Play/JPA/Hibernate が抽象化のレベルを提供していたため、データベースが実際にどのように構築されているかを気にする必要はありませんでした。しかし、自分でテーブルを手動で作成する必要があるように思われるので、これを行う正しい方法に関するドキュメントが見つかりません。
モデルのテーブルを作成するために手動で SQL を記述する必要がありますか? その場合、これらをデータベースでどのように表現すればよいですか?
編集:プレイ1.2.4を使用しています
heroku - Heroku はどのようにして複数の Web サーバーで Evolutions を 1 回だけ実行しますか?
Evolutions は、DB スキーマのアップグレードのためのデフォルトの Play メカニズムです。
複数の Web サーバーを含む Heroku セットアップに play バージョンをプッシュした場合、heroku はどのようにして進化版を 1 回だけ実行することを認識しますか?
実際 - より一般的な (関連する?) 質問 - バージョンを N 個の Web サーバーのセットアップにプッシュする場合、起動順序はどうなりますか? Heroku は一度に 1 つずつ起動しますか?
sql - Play2 Evolutions のスケーリング方法
私は最近、あるプロジェクトで Play2 を使い始め、evolutionsのセクションを読みました。私のプロジェクトに 1 つのテーブルがある場合、彼らが引用する例は問題ないように見えますが、10 ~ 20 のテーブルが1.sql
あり、それらへの変更2.sql
が3.sql
.
Ruby on Rails、Symfony などでは、エンティティごとにアップ/ダウン マイグレーションを定義します。
私の質問は、Play2 で進化をセットアップする最良の方法は何ですか? すべてのテーブルを1.sql
入れてから、それらに少し変更を加える必要が2.sql
ありますか? .sql
または、テーブルごとに個別のファイルを作成する方法はありますか?
また、大規模なオープン ソースの Play2 プロジェクトで、どのように見えるかを確認できる例はありますか?
java - Play フレームワーク 2.1.1 の展開に関する問題
そのため、非常に単純な Play Framework 2.1.1 アプリをデプロイしようとしていますが、ポートのコマンドラインを介してフラグを渡し、データベースの進化を適用するたびに、それらは無視されます。
例えば:
sudo play start -Dhttp.port=80 -DapplyEvolutions.default=true
このコマンドを使用すると、サーバーは起動しません。port フラグと applyEvolutions=true フラグの両方が完全に無視され、次のエラーがスローされます。
[警告] 再生 - 本番データベース [デフォルト] には進化が必要です! [警告] play - 自動的に実行したい場合は -DapplyEvolutions.default=true で実行してください (注意してください) おっと、サーバーを起動できません。@6elhl9mca: データベースの「デフォルト」には進化が必要です!
考えられる限りのことはすべて試しましたが無駄でした。ローカル マシンで Play Run を使用しても問題なく動作します。サーバーはUbuntu 12.04を実行しています。すべての適切なドライバーと接続文字列が存在し、テストされており、データベースが実行されており、Play フレームワーク以外はすべて問題なく動作しています。
playframework - Play フレームワーク: ユーザーに権限がないか、オブジェクトが見つかりません: PLAY_EVOLUTIONS
Play Framework を使用していますが、モデルをアプリケーションに追加した後に次のエラーが発生しました。
私の設定:
私は 1 つのテーブル ( ) で 1 つの進化しか持っておらず、1Users
つのモデル ( User
) も持っています。アプリケーションの何が問題になっていますか?
追加モデルUsers
を導入した後、テーブルが作成されていないことがわかりましたUser
私の進化 (1.sql):
追加モデルなしで新しいアプリケーションを作成しましたが、次のエラーが発生しました
私のアプリケーションの設定:
PS:ソースを共有しました: https://github.com/skayred/play-hsqldb-test
playframework - 遊びの進化を統合する
私は自分のプレーを準備してきたので!実稼働用のアプリを作成し、データベースの埋め戻しを開始したため、モデルをかなり変更しました。私は現在、進化スクリプトで 8.sql に達していますが、これらを統合して 1.sql からやり直す方法があるかどうか疑問に思っていました。
1.sql を書き換えて現在のスキーマをモデル化し、2 ~ 8 を削除できますか? それとも、これにより Play がびっくりするでしょうか?
あなたが持つことができる進化スクリプトの数に制限があるとは思わないので、それは大したことではありませんが、少ない方がいいでしょう. テーブルを削除して最初からやり直すことができない理由は、削除したくないデータがそこにあるからです。
空間データ (PostGIS) があり、それが適切にバックアップされるかどうかわからないことを除いて、おそらくデータをバックアップしてから再インポートすることができます。
playframework - 「データベース 'default' は不整合な状態です!」行ったり来たり
デプロイされたサーバー上のプレイデータベースの進化が一貫性のない状態にあるという問題が何度もありました。何が問題なのかわかりません。
- すべてのテストは正常に動作します (メモリ内)
- (メモリ内で) run でアプリケーションを起動できます
- 進化SQLスクリプトを削除し、新しく生成させます(ブラウザの進化トリガーをクリックして)
- mysql アクセス用の conf ファイルで必要なプロパティを切り替えます
- 私はビルドを開始します
play clean compile stage
- mysql データベースを削除して作成します
- 次に、 -DapplyEvolutions.default=true でアプリケーションを開始します
私はしばしばこのエラーを受け取ります:
プロセス全体をいじった後、突然機能します。
scala - slick に継承された列の ddl を強制的に生成させる方法
多くのテーブルがすべて同じ列を必要とする状況があります。
- id:ロング
- 作成:タイムスタンプ
ただし、「作成された」列は Web では使用されません。「id」は使用されます。
これを行うために、抽象クラスとオブジェクトを使用しました。
次に、具体的なクライアントを実装しました。
次に、ClientController の一部を次に示します。
問題は、「作成された」列が Web に返されることを望んでいないため、クライアント ケース クラス、デフォルト プロジェクション、またはコントローラー フォームに含まれていないことです。作成時に設定したいだけなので、私がやったことは次のとおりです。
私の問題は、スリックが「作成済み」を生成しないことです
BaseTable を拡張する任意のテーブルの列。「作成済み」列を手動で追加すると、すべて正常に動作します。まだ滑らかな ddl 生成を使用してこれを達成する方法はありますか?