본문 바로가기
Web/NestJS

TypeORM QueryFailedError: column "foo" of relation "bar" contains null values

by 한영구 2021. 12. 14.

NestJS, TypeORM, PostgreSQL, pgAmdin을 사용하였습니다.

 

초기 상태

게시물을 관리하는 Board 테이블을 정의하였습니다.
아래와 같이 Entity 파일을 작성한 후 샘플 데이터를 INSERT 하였습니다.

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;
}



오류 발생

테이블에 test라는 이름의 column을 추가하기 위해 아래와 같이 Entity 파일을 수정하였습니다.

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()
  test: number;
}


QueryFailedError가 발생하기 시작했습니다.
샘플로 넣어둔 데이터에는 test column 값이 존재하지 않기 때문에 발생하는 오류였습니다.

[Nest] 6190  - 2021. 12. 14. 오후 1:43:42   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...

QueryFailedError: column "test" of relation "board" contains null values



오류 해결

두 가지 방법으로 해결해보았습니다.
첫 번째는 샘플 데이터에 test column 값을 넣어주는 방법입니다.


두 번째는 새로 추가할 column에 nullable 설정을 해주는 방법입니다.

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({ nullable: true })
  test: number;
}