[ postgres ] DataTypeNotSupportedError: Data type "Object" in "~" is not supported by "postgres" database.
🌈 프로그래밍/삽질

[ postgres ] DataTypeNotSupportedError: Data type "Object" in "~" is not supported by "postgres" database.

반응형

 

[ 오류 원인 ]

이전 포스팅에서 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

 

TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server,

 

typeorm.io

바로 위의 부분이다.

내용을 조금 발췌를 해보면..

이런 식으로 사용할 속성의 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의 사용에 있어서 익숙해질 수 있는 발판이 되었으면 한다..!

반응형