[django] migration error(->migration reset)

kiwony_·2022년 2월 23일
0

django

목록 보기
8/15

DB에 데이터를 접근해서 for문으로 출력하는 부분을 하고 있었는데 submit버튼을 눌러도 새로고침만 될 뿐 출력이 안 되는 문제가 있었다.
(for문이 아니라 입력할 때마다 바로바로 출력되는 코드에서는 새로입력할 때마다 기존의 입력값이 사라지는 문제가 있었음)
개발자도구를 보면 입력값이 있긴 한 것 같은데 당시엔 뭐가 문제인지 몰랐다..

강의에 있는 코드랑 똑같은데 결국 뭐가 문제인지 몰라서 처음부터 다시 만들었었다
강의를 중간에 혼자서 projectapp을 구현하기 위해 생각하다가 하 이게 데이터베이스 문제였음을 깨달았다. 걍 데이터베이스에서 가져올 게 없었던 것이다..

model.py에 들어가보니 아니나다를까

text를 test로 입력했었던 것. 진짜 미친듯.. view의 문제라고만 생각했었다. 역시 장고의 구성에 대해 빠삭하게 알고있어야하는구나

그래서 migration을 리셋하고 다시 migrate를 하기로 했다.

migrations reset

  1. 터미널 창에서 아래 명령어를 입력하면 어떤 앱이 migration이 되어있는지 기록을 확인할 수 있다.
python manage.py showmigrations

[x]표시된 파일이 해당 앱에서 migrate 되어있다는 표시이다.

나는 저 accountapp에 있는 migration을 취소하고 싶은거다.

  1. 해당 앱을 취소하는 명령어를 실행한다.
python manage.py migrate --fake accountapp zero

실제 migration파일인 0001_intial 파일삭제 후 showmigrations 실행
그럼 accountapp에 있는 migrations가 아예 사라진 것을 볼 수 있다.

  1. accountapp/migrations/pycache에서 pycache 삭제

operationalError

여기까지 한 뒤에 바로 새 migrations를 만들고 migrate시켜버리면(migration fake) 아래와 같은 에러가 뜬다.
테이블명을 제대로 변경하고 migration을 실행했는데 왜 오류가 생겼는지 모르겠다.
(db에 변경이 있을 땐 migration을 실행해야함)
어쨌든 그냥 db를 삭제하고 테이블도 초기화하는 방향으로 가기로 했다.

Deletion db.sqlite3

  1. db.sqlite3파일을 삭제한다.
    그리고 showmigrations 명령을 실행해보면 아래와 같은 상태가 된다.
  2. 그 다음에 makemigraions , migrate를 실행해서 새롭게 생성하면
    db.sqlite3도 새로 생성된다.

참고:

https://yuda.dev/216

https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html


서버를 실행하니 제대로 작동한다. 드디어!! ㅠㅠ

profile
에러의 지옥 속 막다른 길 (ง •̀_•́)ง

0개의 댓글