2013-07-18 1 views
0

장고 웹 응용 프로그램의 기초로 사용되는 레거시 MySQL 데이터베이스가 있습니다. 원래 모든 테이블에 대해 MyISAM 엔진을 사용했지만, 외래 키 요구 사항으로 인해 모든 테이블을 InnoDB로 변경하고 Foreign Key 및 Unique 필드를 관련 모델에 추가했습니다.Django South - 외래 키와 고유 한 관계를 데이터베이스에 추가해서는 안됩니까?

이 개발 데이터베이스를 곧 프로덕션 서버로 내 보내야하므로 South를 사용하여 데이터 모델을 db로 마이그레이션했습니다. 그러나 테이블 필드 자체에 명시 적 PK, FK 및 고유 제약 조건이없는 테이블은 없지만 초기 마이그레이션 스크립트에서 생성 된 0001_initial.py 파일에 표시됩니다.

나는

./manage.py schemamigration app --initial 
./manage.py migrate app 

Received Table Exists error, reran with --fake flag 
./manage.py migrate app --fake 
./manage.py migrate app 

를 통해 오류없이 실행 된 마지막 명령을 마이그레이션을 실행. 그래서 내 질문은, 테이블에 명시 적 제약 조건이 데이터 마이 그 레이션을 실행 한 후에 설정해서는 안됩니다?

답변

0

가짜 마이그레이션을 실행하면 마이그레이션이 데이터베이스에 위장되었음을 의미합니다. 마이그레이션은 (0001_initial.py 파일의 마이그레이션)이 완료되었다고 가정합니다. --fake를 사용하여 마이그레이션 할 때 데이터베이스 변경 사항이 적용되지 않습니다. 당신이 생성하려고하는 테이블이 데이터베이스에 존재하기 때문에 테이블 존재 오류가 발생했습니다. syncdb를 실행하는 동안 생성 된 테이블 일 수도 있습니다.