TypeOrm DB연결문제

권태형·2023년 4월 11일
0

NestJS 연습

목록 보기
4/19

DB가 연결되지 않는다... 연결시간 초과로 인한 오류가 발생했다.

아주 이것저것 구글링을 통한 삽질을 많이 했다.

1. 우선 MySQL이 잘 동작하고 있는지 확인 해보았다. 워크벤치를 이용해서 보는 것과 services.msc창을 이용해서 보는 법 두가지를 모두 해보았다.

워크벤치를 이용하면 sever status로 들어가 현재 Running상태가 맞는지 확인했지만, 동작하고 있었다.

window + r 키로 "services.msc"에 들어가 MySQL80을 재실행 해주었다.

그래도 여전히 같은 에러가 발생했다. 내가 처음 NestJS와 TypeORM을 사용해서 코드 로직적인 문제인가? 다른 여러 포스팅의 코드들을 참고했지만 크게 다을 것이 없었다.

2. 다른 해결법은 비밀번호 보안강도를 낮춰서 해결했다는데 이것은.. 참고는 했지만 아닐것 같아서 적용하지는 않았다.

3. 스택오버 플로우에서는 synchronize 옵션을 false값을 주라는 답변이 있어 적용해 보았지만, 같은 에러가 반출되었다.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsModule } from './cats/cats.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';
import { Cat } from './cats/entity/cats.entity';

@Module({
  imports: [
    ConfigModule.forRoot(),
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: process.env.DB_HOST,
      port: parseInt(process.env.PORT),
      username: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
      entities: [Cat],
      synchronize: false,
    }),
    CatsModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

synchronize옵션은 개발환경에서 DB의 스키마를 서버를 열때 자동생성해 주는 옵션이라서 배포환경에서 갑자기 스키마가 바뀔때 에러가 발생하게 되는데 이를 방지하기 위해서 false로 두라는 것이었고, 실질적으로 내 에러와는 상관이 없었다.

4. 다른 답변으로 mysql2 가 아닌 mysql을 사용해 보라는 것이 있었지만, 이 또한 해결되지 않았다.

npm uni mysql2 --save
npm i mysql --save

5. 다음 답변으로 Port번호를 제거했더니 동작한다는 답변을 보았다.

I have just removed the port:3306, now it's working

나는 스텍오버플로우의 위의 답변에서 큰 힌트를 얻었다.

port:3306❗❗❗ 그래 맞아 MySQL 기본 포트가 3306번이지... 내 .env파일을 뒤져보니 포트번호가 3000번이더라..

평소에 환경변수의 포트번호는 서버를 열때 쓰는 포트번호를 등록하기 때문에 생각하고 있지 못했다.

내 자신의 허접한 실수 때문에 이렇게 3시간에 가깝게 삽질을 하다니 어후 부끄러울 따름이다. .env에 DB의 포트번호는 DB_PORT로 설정해야 겠다.

모두 키의 네이밍을 조심하자...

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글