状況
不要な列を削除するリリース。手順書には切り戻し手順も書かれている。
ダブルチェッカーとして最初に止めるべき点は?
1. mysqldump app users > users_20261016.sql2. ALTER TABLE users DROP COLUMN legacy_flag;3. 新バージョン(legacy_flag を参照しない)をデプロイする4. 切り戻し: 旧バージョンのアプリを再デプロイする正答
- mysqldump に --single-transaction を付けるべき
- ダンプファイルをサーバー外にも退避する手順がない
- 旧バージョンは legacy_flag を参照するので、4 だけでは列がなく動かない
- DROP COLUMN の前に SHOW CREATE TABLE の結果を残すべき
解説
列を削除した後に旧バージョンのアプリへ戻しても、旧アプリが参照する legacy_flag は存在しないため、エラーで動かない。切り戻し手順として成立していない。列の削除は新バージョンが安定してから別のリリースで行うか、切り戻しに列の復元(ダンプからの戻し方を含む)を書く。--single-transaction やダンプの退避も熟練者がする指摘だが、切り戻しが機能しないという根本の誤りより優先度は低い。
この問題を含む 危険察知 のテストを制限時間つきで解く
危険察知クイズへ