Djangoでマイグレード済みのアプリを削除する
Django(バージョンは1.9)のプロジェクト内で使っていたアプリを削除したいときに、ただアプリのディレクトリを削除しただけではmanage.pyによるマイグレートがエラーになり使えなくなる
対策
Djangoが管理している情報をいじる必要があるらしい
以下の例はMySQLを使っているプロジェクトで"hoge"というアプリを削除している
mysql> delete from auth_permission where content_type_id in (select id from django_content_type where app_label = 'hoge'); mysql> delete from django_admin_log where content_type_id in (select id from django_content_type where app_label = 'hoge'); mysql> delete from django_content_type where app_label = 'hoge'; mysql> delete from django_migrations where app = 'hoge';
これで"hoge"というアプリでのマイグレーションはなかったことになり、manage.pyでのマイグレーションも正常に使えるようになる
とここまで実際に作業をしたのだが、
実はmanage.pyのコマンドでアプリの削除を安全に行うコマンドが用意されているような気もする。。。
が、とりあえず復旧できたしとりあえずOK