Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

실습예제 따라하다가 slugfield가 unique하지 않게 되는 경우

3 years, 7 months ago

mdevl mdevl

The above exception (UNIQUE constraint failed: blog_tag.slug) was the direct cause of the following exception:

이런 에러를 만났는데요.

카테고리 까지만 입력 안하면 아무런 에러도 안났고..

어드민페이지에서 새 포스팅 작성 시에는 에러가 안났구요.

웹상에서 새 포스트 작성시 태그를 입력 하면 무조건 저 에러가 나왔습니다.


다행히 책에서 시킬 때 마다 꼬박꼬박 커밋 하고 있었기 때문에 한단계씩 뒤로 되돌려가면서 파악해보고 있었는데..

분명 잘 되던 커밋에서도 안되는걸 발견하고 뭔가 이상하다 싶어서 여기저기 검색해봤는데 쉽지 않네요..


얼핏 아예 그냥 sqlite3 파일과 마이그레이션 파일 전부 삭제하라는 것 같아서

이왕 망친거.. 어차피 다시 하면 되지뭐.. 하고 전부 삭제하고 새롭게 superuser 만들며 시작했더니

그 후로 아주 잘 됩니다.


그런데 도대체 언제부터 이렇게 된지는 모르겠어서요..

slugfield가 unique하지 않게 되는 경우가 어떤 경우가 있나요? 


혹시 제가 깃으로 되돌아가서 한번 더 해보고 그런 식으로 하는 부분에서 문제가 생겼을 수 있을까요?


sungyong
sungyong   3 years, 7 months ago

정확히 어떤 동작을 하셨는지 파악하기 어렵기 때문에 판단하기가 저로서도 어렵습니다. 

db.sqlite3와 migrations 폴더는 git에서 관리하고 있지 않기 때문에, 롤백을 하더라도 버전관리가 되지 않습니다. 다시 말해서, slugField가 생긴 이후, slugField를 만들기 이전으로 돌아가더라도, 소스코드만 예전으로 돌아갈 뿐, 데이터베이스에 남아있는 내용은 예전으로 돌아가지 않습니다. 

이 과정에서 문제가 생겼을 것 같습니다. 

말씀대로, 이런 경우에 해결하는 가장 쉬운 방법은 db를 완전히 리셋하는 것입니다. json으로 내려서 원하는 정보만 다시 넘길 수도 있지만, 이 과정은 저희 책이 다루고 있는 범위를 넘어가기 때문에 다루지 않았습니다. 

Updated: April 26, 2021, 11:47 p.m.

2KNG
2KNG   2 years, 9 months ago

실습 진행중 같은 문제가 생겨 댓글 남깁니다. 

저같은 경우는 ',' 와 ';' 외에 # 까지 처리를 하고싶어 replace 함수에 # 도 넣었다가 같은 에러 발생하였습니다.

(#은 앞에 붙어서

안녕, #하이, 헬로;

> 안녕,,하이, 헬로 로 처리됨)

admin 페이지에서 tag 쪽을 확인해보니 실수로 공백이 추가 되어있었습니다. 

공백을 삭제 처리해주니 이 부분 해결되었습니다.

Updated: Jan. 30, 2022, 7:15 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A