Trouble Shooting

매우화가나는 마이그레이션

kinggoddino 2024. 9. 8.

 

마이그레이션은 항상 나를 화나게한다

 

 

▶ 현ㄴ재상황

 

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