2016-07-16 5 views
1

나는 (예를 들어, 테스트하기 전에) 실행하는 데 35 시간이 소요되는 앱이 있으므로 스쿼시하고 싶습니다.새로운 초기 마이그레이션을 사용하여 마이그레이션 스쿼시 사용

squashmigrations 명령은 작업을 99에서 88로 줄이지 만 최적의 상태는 아닙니다. 이것은 아마도 여러 번의 RunPython 작업으로 장고가 다른 작업을 최적화하지 못하게하기 때문일 것입니다. 이 모든 RunPython 작업은 데이터베이스가 비어있어 축소 된 마이그레이션에서는 쓸모가 없습니다. Django 1.10에서는 elidable 매개 변수가이 경우 건너 뛸 수 있지만 여전히 많은 혼란이 남아 있습니다.

그것이 마이그레이션의 긴 목록의 숙청 버전으로 신선한 초기 마이그레이션을 사용하는 것이 좋습니다 :

그러므로 내 질문에, 장고가 생성하는 초기 마이그레이션에 가까운 나는 숙청 마이그레이션 생각했던 무엇입니까? 어떻게 그럴 수 있니?

답변

1

테스트 데이터베이스 또는 프로덕션 데이터베이스에 중요한 데이터가 없으면 초기 마이그레이션을 새로 사용할 수 있으며 적절한 해결책이 될 것입니다.

저는이 트릭을 많은 시간 사용했고 저에게 효과적입니다.

몇 가지 생각 :

  • 때때로, 먼저 모든 나머지 다음 로컬 응용 프로그램 중 하나에 대한 마이그레이션을 만들 필요가;

  • 빈 데이터베이스가있는 manage.py migrate을 실행하기 전에 모두 마이 그 레이션하고 db를 백업 할 수 있는지 확인하십시오.

참고 : 당신은 가능하면 SQLite는 함께 메모리 테스트 및/또는 테스트를 실행에 실행하려고 할 수 있습니다 테스트를 가속화합니다.

+0

고마워요! 어떻게 초기 마이그레이션을 생성합니까? 현재의 모든 마이그레이션을 다른 폴더로 옮깁니 까? – pintoch

+1

일반적으로 각 로컬 앱에서 '이전'폴더 만 제거합니다. 일반적으로 PostreSQL을 사용합니다. 그래서 가장 간단한 경우 나는 이것을 실행한다 :'dropdb dbname && createdb dbname && rm -rf some_application/migrations && python manage.py migrate' –