どんな現象?
つい今、カラム名を更新するためにPostgreSQLの対象テーブルを手動で削除した。
理由は、データが2つしか入っていなかったため最初から作り直せば良いや~と思っていたらマイグレーションでに失敗した。
マイグレーションの状態を見ようと下記のコマンド打った。
python manage.py showmigrations <テーブル>
すると、下記の結果が返ってきた。
python manage.py showmigrations <テーブル>
adminuser
[X] 0001_initial
[ ] 0002_rename_name_adminuser_username
つまり、0001_initial
マイグレーションがすでに 適用済み だと Django は認識しているけれど、手動でテーブル(adminuser_adminuser)
をDrop
したため、テーブルは存在しない という不整合状態です。
そのため0002_rename_name_adminuser_username
を適用しようとしても、「そもそも元のテーブルがない」ので失敗しているのです。
✅ 解決策(安全にやる)
🔧 手順1:マイグレーション履歴から 0001 を削除
マイグレーションを「未適用」に戻してから再実行すれば、テーブルが正しく作られます。
# 管理ツールやpsqlなどでデータベースに接続して
DELETE FROM django_migrations WHERE app = 'adminuser' AND name = '0001_initial';
🔁 手順2:マイグレーションを再実行
python manage.py migrate adminuser
以上です。
サイト