KwanHak commited on
Commit
b6544a6
·
1 Parent(s): 5f43b48

git commit -m "fix(backend): .env 파일 로드 및 DB 연결 설정 개선

Browse files

## 문제점
- database.py가 .env 파일을 제대로 로드하지 못함
- DB_PASSWORD 기본값이 빈 문자열로 설정되어 인증 실패
- 'Access denied for user root@localhost (using password: NO)' 에러 발생

## 해결 방법
1. .env 파일 경로를 명시적으로 지정
- Path(__file__).parent.parent / '.env' 사용
- load_dotenv(override=True)로 환경변수 강제 로드

2. DB_PASSWORD 기본값 수정
- Before: os.getenv('DB_PASSWORD', '')
- After: os.getenv('DB_PASSWORD', 'root')

3. 디버그 출력 추가
- DB 연결 정보 확인용 print문 추가
- 비밀번호 로드 여부 확인 가능

## 변경 사항
- Backend/app/database.py
- .env 파일 로드 로직 개선
- DB_PASSWORD 기본값 변경 ('' → 'root')
- 디버그 출력 추가

## 테스트
- [x] MySQL Workbench 'Smarteye' 연결 정보로 DB 연결 성공
- [x] uvicorn 서버 실행 시 '✅ Database connection successful' 출력
- [x] .env 파일의 환경변수 정상 로드 확인

## 관련 이슈
- MySQL 로컬 설정: DB_HOST=127.0.0.1, DB_PORT=3306
- Conda 환경(pytorch) 사용
- DB 비밀번호: root (로컬 개발 환경)

Fixes #database-connection-error"

Files changed (1) hide show
  1. app/database.py +10 -2
app/database.py CHANGED
@@ -19,7 +19,11 @@ from dotenv import load_dotenv
19
  # ============================================================================
20
  # 환경 변수 로드
21
  # ============================================================================
22
- load_dotenv()
 
 
 
 
23
 
24
  # ============================================================================
25
  # 데이터베이스 설정
@@ -27,9 +31,13 @@ load_dotenv()
27
  DB_HOST = os.getenv("DB_HOST", "localhost")
28
  DB_PORT = os.getenv("DB_PORT", "3306")
29
  DB_USER = os.getenv("DB_USER", "root")
30
- DB_PASSWORD = os.getenv("DB_PASSWORD", "")
31
  DB_NAME = os.getenv("DB_NAME", "smarteyessen_db")
32
 
 
 
 
 
33
  # MySQL 연결 URL 생성
34
  # pymysql 드라이버 사용, charset=utf8mb4 설정
35
  SQLALCHEMY_DATABASE_URL = (
 
19
  # ============================================================================
20
  # 환경 변수 로드
21
  # ============================================================================
22
+ from pathlib import Path
23
+
24
+ # .env 파일 경로 명시적으로 지정
25
+ env_path = Path(__file__).parent.parent / '.env'
26
+ load_dotenv(dotenv_path=env_path, override=True)
27
 
28
  # ============================================================================
29
  # 데이터베이스 설정
 
31
  DB_HOST = os.getenv("DB_HOST", "localhost")
32
  DB_PORT = os.getenv("DB_PORT", "3306")
33
  DB_USER = os.getenv("DB_USER", "root")
34
+ DB_PASSWORD = os.getenv("DB_PASSWORD", "root") # ← 기본값을 "root"로 변경
35
  DB_NAME = os.getenv("DB_NAME", "smarteyessen_db")
36
 
37
+ # 디버그 출력 (개발 중에만 사용)
38
+ print(f"🔍 DB Config: {DB_USER}@{DB_HOST}:{DB_PORT}/{DB_NAME}")
39
+ print(f"🔍 Password loaded: {'Yes' if DB_PASSWORD else 'No'}")
40
+
41
  # MySQL 연결 URL 생성
42
  # pymysql 드라이버 사용, charset=utf8mb4 설정
43
  SQLALCHEMY_DATABASE_URL = (