DATABASECHANGELOGテーブルの記録と実際のDBスキーマの乖離。
| 試した方針 | 失敗理由 |
|---|---|
| チェックサムエラーを無視して再実行 | Liquibaseがハッシュ不一致を検出してブロック |
| 手動DDLで修正(13文SQL) | 存在しないUNIQUE KEYへのADD等、生成ミスが多発 |
| 古いバージョンのまま運用継続 | セキュリティリスクの蓄積、負債増大 |
| 中間バージョンを順番に経由 | Liquibase系では不要(直接最新へ可能)。工数の無駄 |
| 本番DBに直接AIをアクセスさせてSQL実行 | 個人情報保護法・社内規定違反リスク |
以下を調査・分析してください(本番DBへの直接アクセス・操作は禁止):
1. DATABASECHANGELOGの最終エントリとEXECTYPEを確認
2. 実スキーマとchangeSet記録の乖離範囲を特定
3. OSSの場合はGitHubからマイグレーションYAMLを取得して実行順序を解析
4. 修復SQLの案を生成し、別視点でのレビュー観点も列挙すること
クリーンインストール版スキーマ・旧バージョンスキーマ・本番スキーマの3ファイルを用意してAIに比較させる
-- Liquibaseロックの解除(忘れると次回起動時にロックエラー)
UPDATE DATABASECHANGELOGLOCK
SET LOCKED = 0, LOCKGRANTED = NULL, LOCKEDBY = NULL
WHERE ID = 1;
-- 誤ったDATABASECHANGELOGレコードを削除
-- ※ スキーマ反映済みのchangeSetは残す
-- ※ 削除後、次回起動時にLiquibaseが自動的に未実行分を順次適用する
DELETE FROM DATABASECHANGELOG
WHERE ID LIKE 'v48.00-%'
AND ID NOT IN ('v48.00-001', 'v48.00-002', 'v48.00-003', 'v48.00-004');
本番DBのクローンに修復SQLを実行 → マイグレーション完走を確認してから本番適用
| 役割 | Claude Code | 人間 |
|---|---|---|
| 担当 | 調査・スキーマ比較・SQL生成・OSSリポジトリ解析・AIレビュー | 方針決定・本番DB操作・最終承認 |
| 禁止事項 | 本番DBへの直接アクセス・操作 | AIの出力を無レビューで本番適用 |
同じパターンが起きやすい場面:
今後調べる仮説: