Spaces:
Sleeping
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"
- app/database.py +10 -2
|
@@ -19,7 +19,11 @@ from dotenv import load_dotenv
|
|
| 19 |
# ============================================================================
|
| 20 |
# 환경 변수 로드
|
| 21 |
# ============================================================================
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 = (
|