IT-Q

本番で php artisan migrate:rollback を実行するのが危険なのはなぜですか。

カラムを消す down() はデータごと消えるからです。事故対応で使える代物ではありません。本番で問題が出たときは rollback ではなく、打ち消す内容の新しいマイグレーションを流します。

面接官が見ているのは「書いてあるが使えない」ことに気づいているかの補強。

これは「本番環境でマイグレーションを実行するとき、開発環境と違う点として正しいのはどれですか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • カラムを消す down はデータごと消えるため、事故対応の手段にならない
    その通りです。本番で問題が出たら rollback ではなく、打ち消す内容の新しいマイグレーションを前に進める方が安全です。
  • rollback コマンドは本番環境では動作しないため
    動作します。動作してしまうから危険です。
  • 実行に時間がかかりダウンタイムが発生するため
    時間も問題になり得ますが、本質はデータが失われることです。
  • マイグレーションの履歴が消えて再実行できなくなるため
    履歴は正しく巻き戻ります。問題は履歴ではなくデータです。

面接官は何を見ているか

  • down() を書いていたかを正直に答えられた
  • 本番の rollback はデータ消失リスクがあると認識していた
  • 実際は切り戻しより「打ち消すマイグレーションを前に進める」ことに触れた

模範解答

down() は書きますが、本番で rollback を実行することはほぼありません。カラムを消す down はデータごと消えるので、事故対応で使える代物ではないからです。本番で問題が出た場合は、rollback ではなく「打ち消す内容の新しいマイグレーションを前に進める」方が安全です。down() は主にローカル開発でのやり直し用と割り切っています。