2013-09-21 2 views
0

좋아, 장고 앱을 만들고 있는데 settings.py의 'INSTALLED_APPS'섹션에 남쪽 앱을 설치했습니다. 나는django south migration 데이터베이스를 업데이트하지 않았습니다.

python manage.py schemamigration myapp --auto 
python manage.py migrate testapp 

명령을 사용하고 있으며 최근까지만해도 완벽하게 작동하여 모델을 변경했습니다.

class Users(models.Model): 
    days = (('1', '1'), ('2', '2'),) 
    day = models.CharField(verbose_name='', max_length=1, default='Day') 

지금까지 보셨 듯이 여기에 두 가지 오류가있었습니다. 첫 번째는 변수 'days'에 옵션이 없더라도 기본값을 'Day'로 설정한다는 것입니다. 나는 또한 max_length = 1이고 기본값은 3 자리라고 말했다. schemamigration을 실행하고 명령을 마이그레이션 한 후, 그것이 내가

python manage.py runserver 
는 '일'을 제외하고 선택 사항을 제공했다

을했을 때 다음

DatabaseError: value too long for type character varying(2) 

하고 말하는 오류를 준 말했다 기본이 아니었다, 기본이었다 '1'. 나는 다음 선택으로 '일'을 추가하고 난

python manage.py schemamigration myapp --auto 
python manage.py migrate myapp 

는 여전히 DatabaseError의를주고있다 할 해주기 경우를 제외하고 MAX_LENGTH = 3을 변경했습니다. 다시 시도하고 schemamigration 명령을 수행했을 때 변경 사항이 없다고 말하면 마이그레이션 명령을 시도 할 때 데이터베이스 오류가 발생합니다.

나는 'days'의 최대 길이를 3으로 업데이트하는 명령 행에서 SQL 명령을 실행하려고 생각했지만 PostgreSQL (데이터베이스는 내 앱에 연결됨)에서 데이터베이스를 보았을 때 ' 일별 '항목이 생성되었습니다.

누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

+0

변경 한 후 사용중인 선택 부분을 포함한 소스 코드를 표시 할 수 있습니까? 그게 도움이 될거야. 그리고 데이터베이스 (예 : sqliteman 또는 선호하는 도구 사용)를 검사하고 테이블 레이아웃이 실제로 무엇인지 확인할 수 있습니다. – OBu

답변

0

데이터베이스에서 south_migration_history 테이블을 확인하십시오.

특정 앱과 실행중인 이전 항목이 이미있을 수 있습니다.

그래서 남쪽 이전 이름이 0003로 시작하는 경우 마이그레이션하기 전에 해당 특정 앱에 대해 south_migration_history가 아닌지 확인하십시오.

이미 south_migration_history에 이전 항목이있는 경우 해당 항목을 삭제하고 이전 명령을 다시 실행하십시오.

사용해보기.