すべての移行のための簡単な rake db:rollback コマンドはありますか?
4 に答える
データベースを元の状態または最後のスキーマにするだけでなく、すべての移行を本当にロールバックしたい場合は、次を実行する必要があります。
rake db:migrate VERSION=0
これにより、実際にはすべての移行が完全にロールバックされ、すべての移行が元に戻せるようになります。
今発行する場合
rake db:migrate:status
すべての移行がまだそこにあることがわかりますが、それらは「ダウン」(適用されていない) 状態になっています。
rake db:reset
orを意味する他のコマンドrake db:drop
(@Orlando や @Alex Falke による回答など) は、ロールバックをまったく実行しません。つまり、すべての移行が元に戻せることを保証しません。
さらに、rake db:drop
データベースが他のユーザーによってアクセスされている間は実行できませんが、ロールバックはライブで実行できます (これは一般的に推奨されません)。最後に、データベースを単に削除して再作成すると、スキーマ移行テーブルも削除されます。データベースが削除された後に誰かが実行rake db:migrate:status
すると、「スキーマ移行テーブルはまだ存在しません」という応答が返され、手がかりがありません。どの移行を適用できますか (彼がまだそれを知っているか、それらをリストできる場合を除きます)。
を使用するだけrake db:reset
で、データベースが削除され (すべての移行を元に戻すのと同じ)、最後のスキーマにリセットされます。
更新: より正しいアプローチは を使用しrake db:migrate:reset
ます。これにより、最新のスキーマにリセットする代わりに、データベースを削除して再度作成し、すべての移行を実行します。