django 에서 많은 record 를 가진 table 의 schema 를 변경하기
django 로 만들어 놓은 table 의 schema 를 변경하려 한다. 문제는 table 안의 record 가 너무 많아서 변경이 오래걸린다.
이때는 db 내용을 backup 하고 schema 를 변경한 후 다시 restore 하는 것이 낫다고 한다.[ref. 1]
그래서 아래와 같은 방법으로 변경하기로 했다.
절차
- db back up(pg_dump) :
- 참고
- pg_dump -Fd mydb -t mytable -j 5 -f dumpdir
- pg_restore --data-only -t mytable dumpdir > data.sql
- table 의 모든 record 삭제 : DELETE FROM mytable;
- django_migrations 실패한 migration 내용 삭제
- 실패한 내용이 없다면 하지 않아도 된다.
- db 의 django_migrations table 에서 실패한 migration 내용 삭제
- django/myapp/migrations/....py 삭제
- django migration
- python ./manage.py makemigrations
- python ./manage.py migrate
- db table 내용 restore(qsql)
- /usr/bin/psql -d beluga < data.sql
댓글 없음:
댓글 쓰기