전에 프로젝트 할때도 이런 문제를 겪었었는데
이번에도 한번더 겪어서 이렇게 글로 작성 해두는게
좋을것같아서 작성해둡니다!
1. 환경변수(.env) 적용이 안 되는 문제
증상
- DB 연결 시 Access denied for user ''@'localhost' (using password: NO) 오류 발생
- 콘솔에 출력되는 환경변수 값이 undefined 또는 빈 값
원인
- .env 파일이 프로젝트 루트에 없거나 위치가 잘못됨 (저는 이부분도 잘못 되어있었습니다.)
- .env 파일명이 .env.txt 등으로 잘못 저장됨
- @nestjs/config 모듈 미적용
.env 파일을 읽으려면 하단 과같이 nestjs 에서 권장하는 라이브러리르 다운로드 해서 아래와 같이 추가해넣어주시거나
node.js 에서 제공하는 패키지인 npm install dotenv 한 후 상단에 dotenv.config()로해결해주시면 됩니다
저는 nestjs 에서 권장하는 ConfigModule 을 설치했습니다.
@Module({
imports: [
ConfigModule.forRoot(), //이부분 추가
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.DB_HOST,
port: process.env.DB_PORT ? Number(process.env.DB_PORT) : undefined,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true, //dev 환경에서만 사용
}),
- 서버 재시작안함
해결 방법
- 프로젝트 루트(즉, package.json 파일이 있는 폴더)에 .env 파일 생성
- .env 파일에 DB 정보를 정확히 입력 (예: DB_HOST=localhost, DB_USER=root, DB_PASS=your_password, DB_NAME=your_database)
- @nestjs/config 모듈 설치 및 AppModule에 적용
- 서버를 완전히 재시작
- 환경변수 값이 정상적으로 로드되는지 로그로 확인
2. NoConnectionOptionError: Option "database" is not set 오류
증상
- NoConnectionOptionError: Option "database" is not set in your connection options 오류 발생
원인
- .env 파일에 DB_NAME 항목이 없거나 오타가 있음
해결 방법
- .env 파일에 DB_NAME=your_database_name이 정확히 포함되어 있는지 확인
.env 에는
으로 되어있고DB_DATABASE=smartshop
app.module 에는
database: process.env.DB_NAME
으로 되어있는 간단한 상황 . 일치 시켜줍니다.
3. Unknown database 'smartshop' 오류
smartshop 은 제 데이터베이스 이름입니다
증상
- Error: Unknown database 'smartshop' 오류 발생
원인
- MySQL 서버에 해당 이름의 데이터베이스가 존재하지 않음
해결 방법
- MySQL에 접속 후 데이터베이스 생성
-
sql복사CREATE DATABASE smartshop;
.env 파일의 DB_NAME 값과 실제 생성한 데이터베이스 이름이 일치하는지 확인
이건 MySQL 쿼리생성 해서 저 부분을 붙여 넣기 해주시면 되고 smartshop 이 아닌 여러분들 데이터 베이스 이름 넣어주시면 됩니다.
4. MySQL Workbench 관련 chcp, WMI, Region Settings 오류
증상
MYSQL WORKBENCH could not acquire management access for administration
- Workbench 실행 시 "Could not acquire management access for administration" 등의 chcp, WMI 관련 오류
- 윈도우 Region Settings에서 Beta UTF-8 관련 문제 발생
원인 및 해결 방법
- 환경변수 Path에 C:\Windows\System32가 없으면 추가 후 PC 재부팅
- Region Settings에서 Beta UTF-8 옵션을 해제하고 다시 적용 ( 저는 이게 되었습니다 )
- MySQL Workbench를 관리자 권한으로 실행
- WMI 서비스가 꺼져 있다면 시작
참고 : 스택오버플로우
마무리
대부분의 문제는 다음 사항을 점검하면 해결됩니다.
- .env 파일 위치 및 내용 확인
- 환경변수 값이 잘 적용됐는지 로그로 확인
- MySQL 서버 및 데이터베이스 존재 여부 확인
- 윈도우 시스템 환경변수 및 권한 설정 확인
문제가 발생하면 위 순서대로 점검하는 것을 추천합니다.
추가로 다루었으면 하는 트러블슈팅 이슈가 있으면 댓글로 알려주세요!
'Deep Dives > 문제 해결 (Troubleshooting)' 카테고리의 다른 글
node xx.js 가 실행되지 않은 이유 트러블 슈팅 (0) | 2025.01.15 |
---|---|
공연 예매 사이트 트러블 슈팅 (2) | 2024.11.01 |