본문 바로가기
프로그래밍(Programming)/장고(Django)

[Django] '1054' 마이그레이션 오류/에러 해결 방법 | How to resolve migration error 'OperationalError at'

by 갈팡이지팡이 2019. 10. 1.

 

"본 글은 '2019-10-01' 최초 작성되었으며, 업데이트 발생 시 글 내용 일부가 수정될 수 있음"

위 사진은 에러 내용 참고를 위해 다른 곳에서 가져온 사진입니다.

들어가기

    사건 경위

...더보기

기존 작성된 모델 클래스  작성자 부분 단순한 텍스트 필드가 아닌, 외래 키(ForeignKey)를 사용하여 User 클래스와 관계를 지어주고 싶었음.

이렇게 하는 이유는 다양한 카테고리의 글의 작성자 필드단순한 텍스트(CharField or TextField) 필드로 관리하다 보면, 추후 작성자 이름을 사용해서 필터링 작업을 할 때 상당히 껄끄럽고 불쾌한 상황이 연출됨.

 

이게 작성자 이름으로 필터링을 해야되는데, 일일이 단순한 텍스트 필드어거지로 끌고와서 작업을 해야하는 상황인데 하다보면 이 짓을 왜 하고있나 싶고, 유지보수 방면에서도 불편한 부분이 많음.

 

아직 이 내용이 이해가 안간다면 그냥 편한대로 하던대로 작업하면 되고, 나중에 이 내용이 기억날 때 다시 와서 적용하면 됨.


Step 1. '1054' 마이그레이션 오류 해결하는 방법

1.1. 이것 저것 뒤지다 어거지로 해결하기

...더보기

 

먼저 author 필드에 외래 키를 적용시켜 User 에 접근할 수 있도록 할 예정

author 필드를 클릭하고 [우측 마우스 클릭]해서 [새 인덱스 생성] -> [KEY] 클릭


필드 이름 왼쪽에 녹색 열쇠 모양 표시가 뜨면 정상적으로 된 것임

필드 이름(author > author_id)부터 바꾸고 데이터 형식  길이 정보 수정

[author 필드] 클릭 후 위 창에서 [외래 키] 탭을 선택하고 추가 후 사진과 같이 값 설정


데이터 있는거 다 제거 해줘야함

물론 제거 하기 전 백업은 필수로 해야함


0001_initial.py 파일 삭제

삭제 하는 이유는 DB 테이블을 기존에 잘 사용하고 있는 도중 테이블 속성이 변경되면 변경 전 테이블과 변경 후 테이블의 속성값이 일치하지 않기 때문에 DB 입장에서 눈에 흙이 들어갈 때 까지 migration을 할 수 없게끔 막음(뇌피셜)


python manage.py makemigrations 실행해서 마이그레이션 시작 파일 생성


initial.py 파일이 생성되면 migrate 실행


DB 테이블 상태 한 번 확인해주고,


admin 창(django 관리)에 가보면 정상적으로 동작되는 듯


글 쓰기창도 정상적으로 뜨는데?


그럼 웹 상에서 한 번 실행시켜 보자


스무스하게 잘 되는데?


기분이가 좋은데 글을 써볼가?


응 안돼~(익숙한 화면^^)

문제점이 뭔가 한 번 스윽 쳐다보고 해당 구역으로가서 손 좀 봐주도록 하자


소스 코드 중 일부임

 오른쪽 부분


이런 식으로 바꿔봤음

User.objects.get(method)를 이용해서 DB에 있는 특정 모델을 불러올 수 있음


다시 한 번 테스트 가봤음


편안~(휴..)


자세히 보기 창도 잘 들어가짐


나오기

    삽질 히스토리

...더보기
  • 이것 저것 만지다보니 결국 기능은 구현했고 해결은 했음. 작성자는 실력이 미흡하여 아직까지 본 실험 방법이 추후 웹에 어떠한 영향을 미칠 지 아직 모름, 그러나 그건 그때 가서 생각하기로 했음

 

↓ 이거(공감) 눌러주면 진짜 힘남!