2012-03-27 3 views
1

문제가 있습니다. 내 django 프로젝트에는 myapp 모듈/응용 프로그램이 있습니다. 내 프로젝트는 남쪽을 사용하여 스키마 마이그레이션을 수행합니다. 로컬 호스트에서 ./manage.py schemamigration myapp --initial을 실행 한 다음 migrate 명령을 실행했습니다.django + south : migrate 명령이 데이터베이스에 테이블을 생성하지 않습니다.

그러나 프로덕션 환경에서 migrate 명령을 실행하면 데이터베이스에 myapp 모델의 해당 테이블이 만들어지지 않습니다.

migrate --list을 실행하면 myapp가 마이 그 레이션해야하며 모두 * 기호로 표시되므로 이상합니다.

그래서, myapp을 삭제하고 처음부터 다시 만들 생각입니다 (해당 마이그레이션 포함). 더 나은 해결책이 있습니까?

EDIT : myapp를 삭제하고 처음부터 다시 만들려고했습니다. 그래서 나 또한 (로컬 호스트와 프로덕션 서버에) 데이터베이스에 myapp와의 테이블을 삭제했고, 결국 내가 실행 한 :

schemamigration myapp --initial 명령 명령

migrate myapp 로컬 호스트에서 로컬 호스트

migrate myapp 0001 --fake에 프로덕션 서버에

하지만 South은 계속 프로덕션 서버의 데이터베이스에 myapp 테이블을 생성하지 않습니다.

+0

왜'migrate ... --fake'를 호출합니까? '--fake'는 남한의 유일한 표식 이전을 성공으로 만들지 만 실제 DB 스키마는 건드리지 않는다. – ilvar

답변

0

테이블을 삭제 한 경우 --fake을 실행하면 안되며 manage.py syncdb을 먼저 실행해야합니다. 테이블이 없으면 python manage.py migrate myapp을 실행하고이 작업을 완료해야합니다 (또는 manage.py syncdb). --initial에 의해 생성 된 첫 번째 마이 그 레이션에는 테이블 작성 명령문이 있습니다.

--fake은 명시 적으로 아무것도하지 않고 마이 그 레이션 (DB 변경 수행)하고 히스토리 테이블을 이와 같이 표시합니다.

+0

그래서 : myapp의 (localhost와 프로덕션 서버의) 모든 테이블을 삭제하십시오. 그런 다음'syncdb' 또는'schemamigration --initial'을 실행합니다. 그런 다음 프로젝트를 배포합니다. 그리고? 이 방법으로 프로덕션 서버에서 데이터베이스 테이블을 계속 작성하지 않습니다. –

+0

@GiovanniChetelodicoafare, 모든 테이블이 삭제되면 앱 디렉토리에 '0001_initial' 이전 파일이있는 경우'migrate '를 실행하면 테이블이 생성됩니다. 'south_migrationhistory' 테이블이 최신이고, 재설정중인 앱에 대한 항목이 없는지 확인하십시오. –

+0

myapp의 모델을 변경하지 않았기 때문에 myapp에 대해 South를 사용하지 않기로했습니다. 따라서 프로덕션 서버에서 syncdb를 실행하면 문제가 해결됩니다. models.py를 변경하고 마이그레이션을 수행해야한다면 myapp for myapp를 사용합니다. 도와 주셔서 감사합니다. –

0

나는 조금 늦었지만이 같은 문제가 있었는데 문제는 내 manage.py가 잘못된 설정 파일을 가리켜 잘못된 DB를 가리키고 있다는 것을 발견했다. manage.py가 올바른 설정 파일을 가리키고 올바른 DB로 마이그레이션이 수행되고 있는지 확인하십시오. 이는 여러 개의 manage.py 파일 또는 여러 설정 파일을 사용하는 경우 발생할 수 있습니다.

1

실수로 또는 의도적으로 DB에 테이블을 놓았을 때 ./manage migrate myapp을 실행하려고하면 DB에 삭제 된 테이블이 생성되지 않습니다. South은 DB를 기반으로하지 않기 때문에.

테이블을 다시 만들고 싶을 때. 스키마를 이전 버전으로 마이그레이션하고 최신 버전으로 마이그레이션하십시오. 그에 따라 아래 코드를 사용하십시오.

manage.py migrate myapp 0002 --fake 
manage.py migrate myapp 

참고 : 002는 이전 이전 버전입니다.

관련 문제