Cloudflare D1 마이그레이션 실전 팁¶
한 줄 요약: 원격 D1에 컬럼 추가는 --file보다 --command 인라인이 안정적. OAuth 토큰 권한 차이 때문.
배경¶
D1 = Cloudflare가 무료로 주는 클라우드 SQLite. 강의 사이트(ai-prompt-lecture)의 게시판 데이터가 여기 저장됨.
게시판 카드에 카테고리 분류를 추가하려면 cards 테이블에 새 컬럼이 필요. 이걸 "마이그레이션"이라고 함 - 기존 데이터는 보존하면서 구조만 바꾸기.
두 가지 실행 방식¶
방식 1: 파일로 실행 (실패함)¶
SQL 파일을 업로드해서 실행. 직관적이지만 OAuth 토큰의 import 권한이 추가로 필요해서 인증 에러 자주 남.방식 2: 인라인 명령 (성공)¶
npx wrangler d1 execute lecture-board --remote --command "ALTER TABLE cards ADD COLUMN category TEXT;"
비유로 이해¶
--file= 등기우편 (별도 권한 도장 필요)--command= 카톡 메시지 (일반 권한으로 즉시 발송)
짧은 한 줄짜리 ALTER/CREATE INDEX는 인라인이 빠르고 안정적. 큰 스키마 한 번에 만들 때만 파일.
검증¶
마이그레이션 후 PRAGMA table_info(cards);로 컬럼이 들어갔는지 확인:
결과 JSON에 새 컬럼이 cid(컬럼 인덱스) 끝에 추가돼 있으면 성공.
실전 사용 (2026-04-27 에코프로 작업)¶
ALTER TABLE cards ADD COLUMN category TEXT;
CREATE INDEX IF NOT EXISTS idx_cards_category ON cards(category);
- ADD COLUMN: 카테고리 분류용 텍스트 컬럼 추가 (NULL 허용 = 기존 데이터 영향 없음)
- CREATE INDEX: 카테고리로 필터링할 때 빨라지게 색인 만들기 (책 뒤의 찾아보기 같은 것)