Djangoでマイグレード済みのアプリを削除する

2017年1月16日

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

メモdjango

Posted by gm2bv