[ 오류 원인 ]
이전 포스팅에서 import 관련 오류를 해결하고 난 뒤 (사실 근본적인 해결방법은 아님!)
서버를 빌드해보니 오류가 바뀌었다. 원인은 무엇이었냐면 postgresDB가 entity를 인식하기는 했는데, 이 entity를 table 형태로 매핑해야 하는 작업을 수행해주려고 딱 하는 순간!
postgres 입장에서 뇌정지가 온 것이다.
바로 @Column 이라는 데코레이터의 ColumnType을 정해주지 않아서였다.
[ 오류 발견 ]
위의 이미지처럼 필자는 Board라는 entity를 만들었고 그중 속성(Column)이 게시판의 상태를 나타내는 status라는 속성이 있었다.
첫 줄을 잘 보면 다 나와있다.
DataTypeNotSupportedError이다. 의미를 해석해보면
" postgres에서는 지원하지 않는 type을 사용하고 있으니 좀 바꿔달라! "
하는 것이다.
초기 필자의 board entity는 아래의 코드와 같았다.
[ board.entity.ts ]
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import { BoardStatus } from "./board-status.enum";
@Entity()
export class Board extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
description: string;
@Column()
status: BoardStatus;
}
위에서 보이듯이 @Column의 데코레이터 안에 아무런 속성이 없이 정의를 해주었다.
그래서 처음에는 멀뚱멀뚱 바라만 보고 있었다. " 이게 왜..? "
그러다가 typeorm 공식문서 쪽을 살펴보았다.
[ 해결 방안 ]
https://typeorm.io/#/entities/column-types
바로 위의 부분이다.
내용을 조금 발췌를 해보면..
이런 식으로 사용할 속성의 type을 정해주어야 한다고 한다.. (아니 그냥 알아서 정해줘!~)
아무튼 하라고 하니.. 아래처럼 바꿔주었다.
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import { BoardStatus } from "./board-status.enum";
@Entity()
export class Board extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column("varchar")
title: string;
@Column("varchar")
description: string;
@Column("varchar")
status: BoardStatus;
}
뭐 그냥 일단 가장 DB에서 흔한 속성인 varchar type으로 지정해주고 서버를 빌드해 보았다.
빨갛고 검은 결과만 보다가 초록 초록하고 밝은 빌드 성공 로그들을 보니 마음이 다 편안해졌다..
이로써 typeorm과 postgres의 사용에 있어서 익숙해질 수 있는 발판이 되었으면 한다..!
'🌈 프로그래밍 > 삽질' 카테고리의 다른 글
안드로이드 로컬 앱을 빌드하는 과정 (2) | 2024.11.17 |
---|---|
zsh: command not found: mysql (0) | 2023.01.10 |
[ typeORM ] SyntaxError: Cannot use import statement outside a module (1) | 2021.12.02 |
[ 9/7 삽질 기록 ] MySQL 한글 깨짐?! (0) | 2021.09.07 |
[ 9/6 삽질 기록 ] 험난한 typeORM 사용기 (2) | 2021.09.06 |