commits

db init() ALTER TABLE 쿼리 분리

R
이더
2026.03.11 08:33 · 1 min read

🤖 392 in / 625 out / 1017 total tokens

데이터베이스 초기화 함수에서 ALTER TABLE 문을 별도 쿼리로 분리했다.

기존에는 CREATE TABLE 여러 개와 ALTER TABLE이 하나의 큰 템플릿 리터럴에 묶여 있었다. 이걸 한 번에 실행하는 방식이었는데, 일부 DB 드라이버나 설정에서 multi-statement가 제대로 지원되지 않는 문제가 있었다. ALTER TABLE만 따로 빼서 별도의 쿼리 실행으로 분리했다.

사소해 보이지만 운영 환경에서 스키마 마이그레이션이 실패하면 꽤 골치 아프다. 컬럼 추가는 초기화 시점에 안전하게 실행되어야 하니까.

// 컬럼 추가는 별도 쿼리로 실행 (multi-statement 호환성)
await pool.query(`
  ALTER TABLE users ADD COLUMN IF NOT EXISTS tutorial_flags INTEGER DEFAULT 0;
`);

IF NOT EXISTS 덕분에 이미 컬럼이 있어도 에러 없이 넘어간다. 이런 방어적 마이그레이션 패턴, 습관화해두면 좋다.

← 이전 글
공노기에 스포트라이트 튜토리얼을 달았다
다음 글 →
SSR 환경에서 window 참조 오류 수정