2014-04-09 2 views
0

남쪽을 학습하는 과정에서 나는 실수를하고 싶습니다. 난 그냥 4 단계와 2 단계를 실행할 수 있습니다 그들이 출연하는 경우 3이 적용되지 않습니다, 분명히Django 남쪽, 특정 이전을 제거하십시오

# migrate --list 
(*) 0002_auto__add_lesson #add the table 
(*) 0003_auto__del_lesson #dammit, table uses wrong db engine so delete it 
(*) 0004_auto__add_lesson #recreate the table 

:

./migrate my_app 0004 

그러나 2 단계로 3

는 중복 여기에 그들 중 하나입니다 실행해야 할 필요는 없습니다. 간단히 제거 할 수 있습니까? 또한, 나는 두 가지 고려 사항이 여기에있다

+0

'... migrate my_app 0004'를 실행하면 마이그레이션 2, 3, 4가 적용됩니다. – Suor

답변

3

, 사전에 ... 임 누군가가 그냥 다시 다음 다음 테이블 (및 데이터)를 삭제 것이다 마이그레이션하고 실행할 수있는 걱정

감사를 추가해야합니다.

먼저 마이그레이션을 실행 한 경우 데이터베이스에 기록되며 문제가 발생하는 것보다 파일을 제거하는 경우 데이터베이스가 존재하지 않는 마이그레이션을 참조합니다. 해결책은 다음과 같습니다. ./manage.py migrate my_app 0001으로 마이그레이션 2와 3을 뒤로 실행 한 다음 마이그레이션 파일을 삭제하십시오. 다시 마이 그 레이션 할 수없는 경우 (예 : 데이터베이스를 수동으로 엉망으로 만든 경우) ./manage.py migrate my_app 0001 --fake으로 가짜 마이 그 레이션을 수행하고 데이터베이스를 수동으로 설정해야합니다. 위조 란 스키마 변경이 수행되지 않지만 마이그레이션 실행 노트는 제거된다는 것을 의미합니다.

두 번째로 코드를 푸시했는데 다른 사람이 이전을 실행했습니다. 이 경우 2와 3으로 수행 한 작업을 되돌리기위한 새로운 마이그레이션을 만들어야합니다. 그러면 누구나 새로운 마이그레이션을 실행하여 불필요한 변경 사항을 되돌릴 수 있습니다.

+0

답변 해 주셔서 감사합니다.하지만이 비트에 대해 좀 더 자세한 정보를 제공해 주시겠습니까? '마이 그 레이션 2와 3을 뒤로 실행합니다 ./manage.py my_app 0001을 마이 그 레이션 한 다음 마이 그 레이션을 삭제하십시오. - 무슨 뜻인지 정확히 모르겠습니다. – rix

+0

명령'./manage.py migrate my_app '. 'some-number'로 마이그레이션을 실행하지 않습니다. 'some-number'까지 모든 것이 적용되는 지점으로 마이그레이션을 실행합니다. 예제 1 : 최대 2 개의 마이그레이션을 적용하고 '.... 0004' => 마이그레이션 3과 4가 실행됩니다. 예제 2 : 같은 위치에서'... 0001' => migration 2가 뒤로 실행됩니다. – Suor

+0

물론, 삭제 만하면됩니다. 언제든지 마이그레이션 1로 되돌아 갈 수있는 마이그레이션의 전체 지점입니다! RM에게 마이그레이션/0003 .... RM 마이그레이션/0004 .... 완료를 마이그레이션 ./manage.py. –

관련 문제