TypeORM 개념과 설치과정 중 발생한 에러(error)들

여리·2023년 1월 18일
0

ORM

Object Relational Mapping
(객체를 관계성을 잡아서 연결한다?)

  • 객체지향 프로그래밍과 관계형 데이터베이스(RDBMS) 사이에 호환되지 않는 데이터를 변환하는 기술
  • ORM은 관계형 데이터베이스의 2차원 테이블과 테이블 안에 저장된 행(data)을 애플리케이션의 class와 인스턴스에 각각 매핑해주는 역할을 한다.


⬆️ 여러 언어의 프로그래밍으로 작성한 내용이 엑셀시트와 같이 데이터로서 입력되게 함.

ORM 장점

  • ORM을 사용하며 생기는 장점은 개발의 생산성이 향상된다는 것.
  • syntax(문법)실수 없이 잘 짜여진 SQL 쿼리문을 ORM의 힘을빌려 사용하는데
    이는 버그와 실수(human error)의 빈도수를 감소 시킨다
  • 개발자 친화적인 간결하고 직관적인 코드작성(가독성 좋음)
  • ORM 서비스는 특정 RDBMS(EX.SQL)에만 종속되지 않음
    다른 데이터베이스에 유연하게 연결가능
    데이터 객체와 이를 이용한 기능구현에 집중 가능

ORM 단점

  • 미세한 수정 및 디버깅이 상대적으로 어려워짐(다른 개발자들이 짜놓은 코드이기때문)
  • ORM에서 미리 설정해놓은 패턴에 따른 쿼리 명령에 의존함.
    (내가 의도한 경우가 구현이 어려울 수 있음)
  • 의도하지 않은 쿼리 호출의 가능성이 생김
  • RDBMS 데이터관련 상호작용 내역을 Black Box(외부에서 쉽게 알 수 없게 숨기는 기능)로 만듦
    -> 내부에서 실제 어떤 쿼리가 실행되는지 파악 어려움

Tpyeorm 설치과정 중..

코드를 구현하면서 서드파티모듈들을 모두 설치하고 require했다.
http, express, cors, morgan, nodemon, dotenv, typeorm

여기서 코드 구현중에 에러가 발생했다.

이름하야
Error: getaddrinfo ENOTFOUND 127.0.0,1

뭔가 찾아봤더니 자세히 보니 dot(.)을 comma(,)로 찍혀있어서...늘 하는 바보같은 실수..

그리고 수정 후 했더니 다른 에러 등장..😭
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

에러가 난 시점에 가뭄에 단비 같은 동료분께서 슬랙에 공유를 해주셨다..

관련내용에 관련해서 다른 분이 mysql8.0dmf node.js 할때 같은현상으로 일어난 내용을 블로깅 하신 내용도 구글링해서 찾아볼 수 있었다.

관련링크 : https://1mini2.tistory.com/88

원인 : 이 문제는 클라이언트 프로그램에서 mysql 패스워드 플러그인 "caching_sha2_password"을 소화하지 못해서 생기는 오류입니다.
클라이언트 프로그램에서 사용할 수 있도록 유저의 패스워드 Plusin을 바꿔야 한다.

수정과정

$ SELECT Host,User,plugin,authentication_string FROM mysql.user;

를 입력하여 현재 "???의 상태를 확인하여 user의 정보를 수정할 수 있도록 한다.

$ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

를 통하여 user의 정보를 변경

위 이미지는 user의 정보 조회(select)와 정보 수정(alter)를 통하여 오류를 변경한 terminal 이다.

그리고 마주한 또다른 에러..

ER_ACCESS_DENIED_ERROR 'Access denied for user '@'localhost' (using password: YES)'

이 에러의 문제는 node.js에서 mysql 연결시 나올 수 있는 에러문구로, 말 그대로 권한이 없다는 것이다.
이때는 호스트를 만들어 권한을 주면 해결 가능하다.

$ select host, user from mysql.user;

를 통하여 우선 조회 확인!

결국 멘토님께 SOS 요청...

문제는 .env(환경변수)에 해당하는 내용에 대해서 나에게 맞는 정보를 입력하여 npm을 start해야했다. 또한 DATABASE 또한 지정되어있지 않아
mysql에서 database를 생성하여 그에 맞는 database를 작성한 후에 npm start를 해야만한다.

이렇게 해서 모든 typeorm에 대한 정보를 연동시켜서 npm start!

ㅠㅜ... 초기셋팅 연동.. 성공... 참 별거아닌데 이걸 오래끌고 너무 힘들었다.

이제 수업을 따라갈 수 있도록 다음 단계로 넘어가보자!

profile
beckend developer

0개의 댓글