Django에서 마이그레이션 재설정

Vaibhav Vaibhav 2023년1월30일
  1. Django에서 전체 데이터베이스 재설정
  2. Django 앱을 이전 마이그레이션으로 되돌리기
Django에서 마이그레이션 재설정

데이터베이스로 작업 할 때 쓸모없는 데이터로 채워지기 때문에 데이터베이스를 재설정해야하는 경우가 많습니다. 때로는 오류가 발생하기 쉬운 데이터베이스 스키마를 기반으로 데이터베이스를 설정하기도합니다. 때로는 전체 데이터베이스 디자인을 조정하는 비즈니스 로직을 변경하기도합니다. 이러한 상황은 컴퓨터 과학 분야에서 매우 일반적이며이를 처리하기위한 몇 가지 좋은 도구와 명령이 구성되었습니다.

Django에서 이러한 상황이 발생하면 마이그레이션과 데이터베이스를 재설정해야합니다. 마이그레이션을 재설정 할 때 목록에 몇 가지 옵션이 있습니다.

  1. 전체 데이터베이스 재설정
  2. Django 앱을 이전 마이그레이션으로 되돌립니다.

Django에서 전체 데이터베이스 재설정

Django에서 전체 데이터베이스를 재설정해야 할 때 목록에 몇 가지 옵션이 있습니다.

  1. Django의 기본 SQLite 데이터베이스를 사용하는 경우 데이터베이스 파일db.sqlite3를 삭제 한 다음 모든 앱 내의 모든migrations폴더를 삭제할 수 있습니다. migrations폴더를 삭제 한 후 마이그레이션을 다시 만들고 두 가지 명령을 사용하여 마이그레이션 할 수 있습니다. 즉,python manage.py makemigrationspython manage.py migrate입니다.
  2. PostgreSQL 또는 MySQL과 같은 다른 관계형 데이터베이스를 사용하는 경우pgAdmin,DBeaver등과 같은 데이터베이스 관리 도구를 사용하여 모든 테이블을 삭제하거나 명령 줄을 사용하여 수동으로 삭제할 수 있습니다. 또는 완전히 새로운 데이터베이스를 만든 다음 Django 프로젝트에 연결할 수 있습니다. 두 경우 모두 먼저 모든migrations폴더를 삭제 한 다음 마이그레이션을 다시 작성하고 마지막으로 마이그레이션해야합니다.
  3. 또 다른 옵션은 Django의manage.py명령을 사용하여 전체 데이터베이스를 지우는 것입니다. 명령은python manage.py flush입니다. 다시 말하지만이 명령을 사용한 후 모든migrations폴더를 삭제 한 다음 새 마이그레이션을 수행해야합니다.

Django 앱을 이전 마이그레이션으로 되돌리기

전체 데이터베이스를 재설정 할 필요가 없지만 특정 Django 앱에 대한 마이그레이션을 롤백하는 경우 두 가지 옵션이 있습니다. 첫째, Django 앱의 현재 마이그레이션을 일부 이전 마이그레이션으로 되돌릴 수 있습니다. 둘째, Django 앱의 모든 마이그레이션을 재설정 할 수 있습니다.

일부 최신 마이그레이션 (예 : 0014)에서 이전 마이그레이션 (예 : 0008)으로 다시 마이그레이션해야하는 경우 다음 명령을 사용할 수 있습니다.

python manage.py migrate AppName 0008
            --- OR ---
python manage.py migrate AppName 0008_migration_name

그리고 Django 앱의 모든 마이그레이션을 재설정해야하는 경우 다음 명령을 사용할 수 있습니다.

python manage.py migrate AppName zero

때로는 마이그레이션을 되돌릴 수 없습니다. 일반적으로이 조건은 Django 모델에 몇 가지 중요한 변경이있을 때 발생합니다. 이러한 마이그레이션으로 되돌리려 고하면 Django는IrreversibleError를 발생시킵니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Django Migration