Mailbox 프로젝트 (mysql에러,카테고리 별 출력)

김하진·2022년 7월 12일
0

어제부터 본격적으로 프로젝트 작업에 들어 간 것 같다.

어제 오늘 낮까지 어느정도 프론트디자인을 끝내놓고 백엔드 작업으로 들어왔다.

우선 기본적으로 프로젝트는 자동으로 CI/CD 가 되게끔 기본 뼈대를 구성하였다.

오늘 있었던 이슈중 하나는 merge 과정에서 migration 데이터가 겹친 것 같다.

그래서 admin 페이지에서 데이터를 입력하려면

SQL 오류 (1452): Cannot add or update a child row: a foreign key constraint fails

이라는 오류가 난다

-자식 테이블에 데이터가 존재 할 경우, FK 설정을 할 수 없다. 이유는 자식테이블 기 입력 데이터가 날아 가기 때문.

migations 과정에서 뭔가 충돌이 난 것 같다.

해결법을 찾아 보았다.

옵션에 SET foreign_key_checks = 0; 을 추가해주면 에러는 해결 할 수 가 있지만,

근복적인 해결 방법은 아니다, 그후에 더 많은 이슈를 뱉을 것 같기 때문,

오랫동안 구글링을 해본결과 아직 데이터가 별로 없으니 db를 초기화 하기로 했다.

그래서 migrations 를 지우고, mysql 테이블도 싹 지우려고 했다

이 과정에서 또다시 1051인가 에러가 나는데, 이경우는 포링키로 연결한 자식테이블에 데이터가 존재해서 나는 에러이다.

자식 테이블부터 하나둘씩 삭제해주고, 다시 migrate 를 해주면 해결이 된다.

오늘 디버깅 하는 과정에서 시간을 많이 소비해서, 로직을 많이 짜지는 못했다.

우선, 메인페이지에 카테고리6개별로, post를 3개씩 보내줘야하는데 짜는데 좀 머리가 아팠다

요즘 공부하는 알고리즘 이 조금은 도움이 된 것 같다.

    def get(self, request):
        category_list =[]
        for cate_get in range(1,7):
            letter_gets = LetterModel.objects.filter(category=cate_get)[:3]
            for letter_get in letter_gets:
                cate = {
                "category": letter_get.category,
                "title": letter_get.title,
                "content": letter_get.content
                }
                category_list.append(cate)

아직 model 에 create_date 를 설정안해놔서, 추후에 추가해서 .order_by('create_date')[:3]으로 설정하면 최신순으로 데이터를 가져올 수 있을 것 같다.

좀더 좋은 코드가 있는지 작업을 하면서 연구해 봐야겠다. 아직은 썩 맘에 들지는 않는다.

profile
진킴

0개의 댓글