[Django] 마이그레이션 히스토리 의존성 문제

min_bok_·2024년 3월 22일
0

error

목록 보기
2/2

🚨 에러 발생

accounts 앱에서 커스텀 사용자 모델을 생성하고 마이그레이션하려는데 아래와 같은 에러가 발생했다.

Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.

admin.0001_initial 마이그레이션 파일이 accounts.0001_initial 마이그레이션 파일보다 먼저 적용되어있어서 문제가 발생한 것 같다.

python manage.py showmigrations

위의 명령어를 통해 마이그레이션 히스토리를 확인해보았다.

"accounts" 앱의 0001_initial 마이그레이션은 적용되지 않았고, "admin" 앱의 0001_initial 마이그레이션은 이미 적용되었음을 확인할 수 있었다.

accounts
 [ ] 0001_initial
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
 [X] 0012_alter_user_first_name_max_length
blog
 (no migrations)
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial

🛠️ 해결법

accounts 앱의 migrations 폴더를 비우고 admin 앱의 초기 마이그레이션을 롤백해주었다.

python manage.py migrate admin zero

그 후 accounts 앱의 마이그레이션을 적용하였다.

python manage.py makemigrations accounts
python manage.py migrate accounts

그 후 admin 앱의 마이그레이션을 적용하였다.

python manage.py migrate admin

아래와 같이 마이그레이션이 적용된 것을 확인할 수 있다.

accounts
 [X] 0001_initial
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
 [X] 0012_alter_user_first_name_max_length
blog
 (no migrations)
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial

✨ 새롭게 알게된 사실

  • python manage.py showmigrations 를 통해 마이그레이션 히스토리를 확인할 수 있다.
  • 표시는 마이그레이션이 이미 적용되었음을 나타낸다.
  • python manage.py migrate 앱이름 zero 를 통해 마이그레이션을 롤백할 수 있다.

0개의 댓글