코드 위의 하루 (A Day on the Code)

데이터베이스 오류 해결 모음집 본문

⚙️ 오류 해결 모음집

데이터베이스 오류 해결 모음집

code.with.siyeon 2025. 5. 12. 19:16

✅ Part 1. 마이그레이션 충돌 오류

  • 오류 메시지:
    django.db.utils.OperationalError: (1050, "Table 'users_user' already exists")
  • 발생 상황: 모델 수정 후 마이그레이션 파일 삭제 → 재생성 중 충돌 발생
  • 원인 분석: DB에 기존 테이블이 남아있음
  • 해결 방법:
# 1. DB 삭제 후 재생성
DROP DATABASE your_db_name;
CREATE DATABASE your_db_name CHARACTER SET utf8mb4;

# 2. 마이그레이션 파일 삭제 및 초기화
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
python manage.py makemigrations
python manage.py migrate

✅ Part 2. pymysql 모듈 오류

  • 오류 메시지:
    ModuleNotFoundError: No module named 'MySQLdb'
  • 원인: Django 기본은 MySQLdb, 우리는 pymysql 사용 중
  • 해결 방법:
# __init__.py에 추가
import pymysql
pymysql.install_as_MySQLdb()

✅ Part 3. DB 로그인 실패

  • 오류 메시지:
    Access denied for user 'root'@'localhost'
  • 해결 방법:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

✅ Part 4. Git push 시 DB 관련 파일 누락

  • 문제 상황: models.py는 올라갔지만 migrations/, .env, settings.py 일부 누락
  • 해결 방법:
git status      # 추적되지 않은 파일 확인
git add .       # 전체 파일 추가
git commit -m "DB 설정 및 마이그레이션 추가"
git push

⚠️ Part 5. 한글 깨짐 문제 (현재 해결 중)

  • 문제 상황: DB에 저장된 한글이 ???로 보이거나 깨짐
  • 추정 원인:
    1. DB 자체 인코딩이 utf8이 아닌 latin1 또는 ascii
    2. Django → MySQL 연결 설정에서 인코딩 옵션 누락
    3. 테이블/칼럼 생성 시 인코딩 명시하지 않음
  • 현재 시도 중인 해결 방법:

 

1. MySQL에서 DB 인코딩 확인:

SHOW CREATE DATABASE your_db_name;
SHOW VARIABLES LIKE 'character_set%';

 

2. DB 재생성 시 명시적으로 인코딩 설정:

CREATE DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

3. settings.py에 옵션 추가 예정:

'OPTIONS': {
    'charset': 'utf8mb4',
    'init_command': "SET NAMES 'utf8mb4'",
}
  • 현재 상태:
    아직 완전히 해결되지 않았으며, 새로 생성된 DB와 Django 설정이 일치하는지 추가 확인 필요