私のモデルを変更すると、Play Frameworkは私のスキーマ全体を削除して再作成するスクリプトを実行するように求めているようです。明らかに、これは生産のためには機能しません。したがって、これを本番環境で処理する適切な方法は何ですか?プロダクションでのPlay Framework 2データベースの進化の扱い
注:私はebeanとPostgresを使用しており、herokuでホストしています。残念ながら
私のモデルを変更すると、Play Frameworkは私のスキーマ全体を削除して再作成するスクリプトを実行するように求めているようです。明らかに、これは生産のためには機能しません。したがって、これを本番環境で処理する適切な方法は何ですか?プロダクションでのPlay Framework 2データベースの進化の扱い
注:私はebeanとPostgresを使用しており、herokuでホストしています。残念ながら
Ebean
したがって、あなたはできるだけ早くmanual evolutionsに切り替える必要がある、唯一のCREATE DDL
(とないUPDATE DDL
)(answered on their groupなど)を作成することができます。変更を実装する前に
1.sql
進化いくつかのルールは、 1.sql
からのコメントと、次の番号2.sql
,3.sql
などで独自の進化を書き始めます。手動進化に切り替える前に、できるだけ多くのモデル/フィールドを配置してください。最大の部分は、プラグインによって自動的に行われます。
ALTERS
を含める必要があります。変更するたびにUps
とDowns
の両方が必要です。事実、DB guiを使用してDB構造を変更する方が簡単ですが、主に単一の開発者向けに動作します...他の開発者とコードを共有する必要がある場合は、
新しいモデルの次の大きな部分を追加すると、一時的な自動DDLを再び有効にし、新しい部品をコピーするためだけにローカルgitを使用できます。その後、Ebeanプラグインによって生成された新しい部品を貼り付け、独自の革命に戻します。
Biesiorは基本的にそれをかなりうまくまとめました。しかし、Playの初心者としては、具体的な例を使ってもう少し明確にすることが役に立ちます。
まず、次の例はJava用です。
はあなたのモデルダムに新しいフィールドpublic String dum_str;
を追加したとします。その後、あなたはこのようなconf/evolutions/
下2.sql
が必要になります。
# --- !Ups
ALTER TABLE dum ADD COLUMN dum_str VARCHAR(255);
# --- !Downs
ALTER TABLE dum DROP dum_str;
私は、これは参考になる願っています。
スクリプトとしてのバックアップは、現在のdb。 Javaモデルを変更します。 Playで変更を適用し、DBを再作成します 次にデータを復元します。
事務局担当:それ以外の場合は動作しません既存のフィールド名を変更しないでください。
それ以外の読者にとっては、いいえ、それはALTER TABLE dum DROP COLUMN dum_strです。 (COLUMNに注意してください)。 – Simon