카테고리 없음

[Python] Flask db migrate 중 에러 해결법

포그너 2023. 10. 24. 14:13

flask db migrate 또는 flask db upgrade 중 에러가 발생한 경험을 바탕으로 정리했습니다.

 

사례1. SQLite Database 사용 중 테이블에 foreign key 추가할때 발생하는 에러

ValueError: Constraint must have a name

# __init__.py 수정하기
# render_as_batch=True 추가하기
migrate.init_app(app, db, render_as_batch=True) 

# 왜 true로 해야되지? SQLite은 Alter table을 지원 안한다.
No support for ALTER of constraints 
in SQLite dialectPlease refer to the batch mode feature which allows 
for SQLite migrations using a copy-and-move strategy.

 

사례2. 여러 revision을 만들어두고 head가 많아진 상태

ERROR [flask_migrate] Error: Multiple heads are present; please specify a single target revision

flask db history # 먼저 어떤 헤드가 있는지 데이터 확인
flask db merge heads # 이걸로 head 한개로 합침

 

사례3. 데이터베이스가 최신이 아닌 경우

ERROR [flask_migrate] Error: Target database is not up to date.

$ flask db stamp head
$ flask db migrate
$ flask db upgrade

"head"는 현재 데이터베이스 스키마의 최신 상태를 나타냅니다. 즉, "head"는 데이터베이스 스키마의 현재 버전을 의미합니다. flask db stamp head 명령은 데이터베이스 스키마를 가장 최신의 마이그레이션 스크립트(.py)로 표시합니다.

추가로 발생하는 에러는 여기에 추가해놓겠습니다.

반응형