RDS를 재부팅중 쓰는 글입니다
고등학교 1학년부터 군대 전역할 때까지 (거의) 매일 일기를 썼는데
오랜만에 그 때로 돌아간 기분이 듭니다
오늘 해야 했던 일은 총 4개입니다.
추가로 팀원들의 궁금증(?) 해결까지
정확히 말하면 models.py는 모델링 종료 후 바로 PR을 올렸는데
멘토님과 의견을 나눌(?) 부분이 생겨서 아직 OK가 안됐기 때문입니다.
한 유저가 여러 책에 별점을 줄 수 있고, 한 책은 여러 유저에게 별점을 받으므로
다대다 관계가 성립하여, ManyToMany가 되는데 이 부분에 대한 이야기였습니다.
하지만 제가 생각했을 때, 책은 유저가 아닌 작가들이 쓰는 것이기 때문에
직접적으로 연결할 고리가 없었습니다.
저 또한 ManyToMany에 대해 겉핥기 식으로만 알고 있기 때문에, 다룰 수 있을 때 해보면
좋다고 생각해서, 멘토님께 책-작가 관계는 중간 테이블을 만들 수 있으니
그렇게 관리해보겠다고 했습니다.
class Book(TimeStampModel) :
...
author = models.ManyToManyField(Author, through='BookAuthor', related_name='book_author')
...
class Meta :
db_table = 'books'
class BookAuthor(TimeStampModel) :
book = models.ForeignKey(Book, on_delete=models.CASCADE)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
그래서 책-작가 사이에 ManyToMany 관계로 인해 중간 테이블이 생겨 관리하게 되었습니다.
1차 때도 데이터 생성을 제가 했는데, csv파일로 엄청 노가다했었던.. 기억이 납니다.
이번엔 faker 라이브러리를 사용해보려고 했습니다
import os
import django
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE","ridibooksl.settings")
django.setup()
from products.models import *
from faker import Faker
from django.db import transaction
#fake = Faker('ko_KR')
fake = Faker()
#카테고리 리스트
category_list = ['한국소설', '영미소설']
#메뉴/카테고리/작가/출판사/썸네일
with transaction.atomic() :
# Menu(
# name='소설'
# ).save()
# for i in category_list :
# Category(
# menu_id = 1,
# name = i
# ).save()
author_list = [Author(name=fake.name(), country=fake.country(), birthdate=fake.date_of_birth(minimum_age=30, maximum_age=65)) for i in range(15)]
Author.objects.bulk_create(author_list)
# publisher_list = [Publisher(name = fake.company()+' 출판사') for i in range(5)]
# Publisher.objects.bulk_create(publisher_list)
# thumbnail_list = [Thumbnail(image_url=fake.image_url()) for i in range(30)]
# Thumbnail.objects.bulk_create(thumbnail_list)
'''
1. 한국소설 생성 시 14번째 줄의 ko_kr / 영미소설 시 ko_kr 제거
2. 한국소설 생성 시, 국적은 한국으로 통일 / 외국소설은 fake.country()
'''
bulk_create 개굿!
이런식으로 faker 라이브러리를 install 후, import하여 데이터들을 생성했습니다.
맘같아선 한 번에 생성하고 싶었는데, 생각보다 세세하게 나뉘는 게 많았던 게 아쉬웠습니다.
아마 더 효율적이게 데이터를 추가할 방법이 있을텐데, 실력이 많이 부족하네용
RDS에 처음에 저장했을 때 한글이 계속 ??로 나왔었습니다
분명히 나는 파라미터그룹에서 설정 다 해줬고, 파라미터그룹도 utf8mb4 이렇게
잘 나왔는데! 구글에서 alter database .. 어쩌구 하는 명령어도 다 해봤는데
서버도 껐다켜도, 새로 데이터를 등록해도 ???로 나왔습니다
저에겐 정말 ??? 하는 상황이었죠
그래서 큰 맘먹고 인스턴스 삭제 후 다시 생성하려고 삭제를 누른 뒤, 기다리는 중에..
제 인스턴스의 파라미터 그룹이 제가 만든 그룹이 아니라 디폴트 그룹으로 되어있더군요?
아.. 디폴트그룹의 변수를 내가 만든 파라미터그룹의 변수로 바꿔주면 되는데
이미 삭제는 된 상태라서 너무 슬펐습니다
이거 때매도 2시간 정도 쓴 거 같은데 ㅎㅎ
첫 이미지엔 RDS 재부팅과 연관이 있습니다..
어제 키페어랑 우분투로 접속까지는 완료했고, 우분투에서 서버를 키면 됐었습니다.
그런데..
django.db.utils.OperationalError
: (2003, "Can't connect to MySQL server on
'ridibooksl.cc3p5ig8chi6.ap-northeast-2.rds.amazonaws.com' (timed out)")
계속 타임아웃됐다고 떠서, 보안그룹도 바꿔보고 변수도 바꿔보고 다 했는데도
그대로라서 재부팅까지.. 하고 있는 상황입니다 ㅠㅠ
글쓰는 지금까지도 재부팅중이네용..
돌아가는 방향은 얼추 이해했고, 애플리케이션 생성 후 REST API KEY와 REDIRECT URI는
프론트 담당 팀원에게 전달했습니다.
다만, 127.0.0.1이 아닌 EC2의 퍼블릭IP로 줘서 만약 3번 오류를 해결하지 못 하면
REDIRECT URI를 바꿔야 하는 귀찮음이..
내일 꼭 서버해결하고, 카카오 로그인 성공해서 소켓해보고 싶네용 ^0^