마이그레이션은 항상 나를 화나게한다
▶ 현ㄴ재상황
dev에서 기초세팅 한 다음에 장고가 기본으로 가진 앱들을 makemigrations & migrate 해줬다. (이때부터 망한건데 몰랐다)
그 후 accounts 앱 생성
그리고 accounts 앱에서
Customuser 모델 엄청 열심히 만들어줌
선생님이 모델 만들면 마이그레이션 하라고 햇어.
makemigrations & migrate
# 오류코드
raise InconsistentMigrationHistory(
django.db.migrations.exceptions.InconsistentMigrationHistory:
Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.
너무길어
>>> 구글 번역
Migration admin.0001_initial 이 데이터베이스 'default'에서 accounts.0001_initial 의 종속성보다 먼저 적용되었습니다. 어쨌든 마이그레이션 순서에서 문제가 발생했다는 뜻.
내가 accounts 에 CustomUser 모델을 새로 정의했는데, 장고의 기본 앱인 admin 앱은 사용자와 관련된 데이터를 다루기 때문에 마이그레이션이 꼬인 것 같다.
▶ 자아성찰
내가 대체 멀잘못햇길래 이러는건지 차근차근 되짚어보기
1) 장고 기본 앱 admin , auth , contenttypes , sessions 마이그레이션
※ 이 때 기본 User 모델에 의존한 상태로 admin.0001_initial 적용됨
2) accounts 앱 생성 후 CustomUser 모델 생성
3) 장고에게 기본 User 모델 대신에 CustomUser 모델 쓰라고 세팅해줌
4) accounts 앱 마이그레이션
== 이미 User 에 의존하고 있는 애한테 CustomUser 에 의존하라고 함
5) 오류엔딩
showmigrations으로 확인해보면
auth 앱을 보면
user_email
user_username
user_last_login
user_last_name 등등 많이도 있네
암튼 user 에 관련된 필드가 이미 마이그레이션되어 있다.
accounts 는 마치 내 머리처럼 텅 비어있다.
괜찮아 다시하면 돼
1. 마이그레이션 초기화
python manage.py migrate accounts zero
python manage.py migrate admin zero
두 앱의 마이그레이션을 초기화 시켜준다.
후..
아 admin부터 초기화 시켜줘야 되나보다
아니네
2. 그냥 db 수동으로 삭제
데이터베이스에 있는 테이블들 하나씩 선택해서 delete 로 다 지워버린다.
특히 저 auth_user 들
sqlite는 잘못없으니까 남겨놔
그러고 나서 showmigrations 해보면
좋아 다 사라졌어
이제 탐색기창에서 initial 마이그레이션까지 다 지워버린다
이거 지워
그다음 마이그레이션 해
좋아
첨부터 좋게 됐으면 좋잖아
테이블 생성된거 확인해보면 잘 됐다.
아까 데이터베이스랑 비교해보면 auth_user 가 사라지고 accounts_customuser 가 예쁘게 생겼다
앞으로는 제발 user 모델 끝내고 나서 장고 앱 마이그레이션 하기
잘못했을경우
1) db 전부 삭제
2) migrations 파일 삭제
3) 다시 마이그레이션
'Trouble Shooting' 카테고리의 다른 글
가상환경 활성화 후 깃 명령어 안들어먹을때 (0) | 2024.09.15 |
---|---|
비밀번호 해시화 (0) | 2024.09.09 |