この回答で説明されているような、DB スキーマの変更を追跡するためのメカニズムをセットアップしたいと考えています。
データベースに変更を加えるたびに、新しい移行を作成します。通常、移行には 2 つの方法があります。変更が適用される「上」の方法と、変更が元に戻される「下」の方法です。1 つのコマンドでデータベースが最新の状態になり、データベースを特定のバージョンのスキーマにするために使用することもできます。
私の質問は次のとおりです。「up」メソッドのすべての DDL コマンドは元に戻せますか? つまり、常に「ダウン」メソッドを提供できますか? 「ダウン」できない DDL コマンドを想像できますか?
「up」メソッド中にデータが失われる典型的なデータ移行の問題を考慮しないでください。たとえば、フィールド タイプをdatetime
( DateOfBirth
)からint
( ) に変更すると、YearOfBirth
復元できないデータが失われます。