팀프로젝트를 진행하게 되면서 다른 팀원들과 db를 공유해놓은 상태로 개발을 진행해야 할 것 같아. 다음과 같이 세팅을 진행하였습니다.
RDS 생성



사용할 db와 db명, 사용자 명, 암호를 적어줍니다.

ec2연결을 하지 않을 것 이므로 해당사항을 선택한 후 "데이터베이스 생성"해 줍니다.
저의 경우 데이터베이스가 생성되는데 5분정도 소요되므로 천천히 기다려 줍니다.
외부에서 연결
데이터베이스 생성이 완료되었으므로 로컬(DBeaver)에 연결을 해 줄 것입니다.






사용 데이터베이스로 변경 후 노란색부분 접근을 허용할 ip주소를 지정하는 곳으로 고정ip주소나 0.0.0.0/0으로 저장해줍니다.
모르겠으면 그냥 0.0.0.0/0으로 사용하시면 됩니다.

생성한 RDS 데이터베이스의 엔드포인트를 확인한 후

Server Host = RDS 엔드포인트
Username = RDS생성시 사용하였던 사용자 이름
Password = RDS생성시 사용하였던 비밀번호
로 적어주신 후 연결해주시면 됩니다.
Django와의 연결
정상적으로 내 pc와의 연결이 되는걸 확인한 후 작업하는 내용입니다.
#터미널
pip install django-environ mysqlclient
먼저 miriadb를 사용하는데 필요한 라이브러리를 설치해줍니다.
#.env
DB_NAME=[생성한 스키마 명]
DB_USER=[사용자 명]
DB_PASSWORD=[비밀번호]
DB_HOST=[RDS 엔드포인트]
DB_PORT=[포트번호]
팀프로젝트로 git에 업로드를 하게 될텐데 혹시나 하는 유출에 대비하여 환경변수를 사용해 줍니다.
manage.py 와 동일한 폴더에 위치해 주시면 됩니다. gitignore에 .env를 추가하여 commit되지 않도록 해주세요
#settings.py
import environ, os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, '.env')) # 로컬/컨테이너에서 주입
DEBUG = env.bool('DJANGO_DEBUG', default=False)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # MariaDB는 mysql 백엔드 사용
'NAME': env('DB_NAME'),
'USER': env('DB_USER'),
'PASSWORD': env('DB_PASSWORD'), # 깃에 올리지 않음
'HOST': env('DB_HOST'),
'PORT': env('DB_PORT', default='3306'),
}
}
위 내용을 settings.py에 추가 및 변경해 줍니다.
DB테이블을 생성해주시는 분이 따로 계셔서 django 에서는 테이블 생성, 변경없이 단순히 조회를 우선으로 해야했기 때문에 models.py 의 db_column과 Mata.db_table을 모두 테이블에 맞추었습니다
#models.py 예시
class Service(models.Model):
id = models.BigAutoField(db_column="service_id", help_text="Service ID", primary_key=True)
name = models.CharField(db_column="name", max_length=120)
category = models.CharField(db_column="category", max_length=40, null=True)
description = models.TextField(db_column="description", null=True)
official_link = models.CharField(db_column="official_link", max_length=255, null=True, blank=True)
created_at = models.DateTimeField(db_column="created_at", auto_now_add=True)
updated_at = models.DateTimeField(db_column="updated_at", auto_now=True)
class Meta:
db_table = 'service' # 실제 테이블명 그대로
managed = False # Django가 테이블을 만들거나 변경하지 않음
에러상황
#error
django.db.utils.OperationalError: (1050, "Table 'user' already exists")
기존에 sqlite에서 작업해던 내용과 충돌이 있어 다음과 같은 에러가 발생하였는데 이미 user를 초기 마이그래이션을 하였던 기록이 남아있어 문제가 발생한 것으로 파악됩니다.
#터미널
python manage.py migrate --fake-initial
python manage.py migrate --fake-initial
--fake-initial은 초기 마이그레이션의 CreateModel 대상 테이블이 이미 있으면 적용된 것으로 표시합니다.
이 경우 모델/마이그레이션을 기존 스키마에 맞게 수정하거나, DB를 먼저 맞추어야 합니다.
'project > guava' 카테고리의 다른 글
| github rivate 팀 프로젝트를 내 public 리포지토리로 복제하는 방법 (0) | 2025.11.24 |
|---|---|
| [Django + drf + jwt] 커스텀 User 회원가입, 로그인 (1) | 2025.09.22 |