2011-06-13 4 views
10

나는 내가하나요 마이그레이션 사우스 이전 또는 이후 syncdb를 호출 할 필요가

./manage.py schemamigration appname --auto 
./manage.py migrate appname 

이 모두 충분하고

./manage.py syncdb 

또는 전화를해야하는 경우 South 새로운 그래서 난 궁금 해요 cases South can handle on its own.

+0

나는 남쪽 문서를 읽은 후에 똑같은 질문을했다. 그들은 훌륭하지만이 관계에 대한 명확한 설명은 분명히 어긋나지 않을 것입니다. – markdsievers

답변

21

남쪽은 넓은 프로젝트가 아닙니다. 그것은 넓은 응용 프로그램입니다.
일부 앱은 남쪽을 사용하며 일부 앱은 사용하지 않습니다.

응용 프로그램이 남쪽으로 통합되는 경우, 할 수있는 DB는

./manage.py schemamigration appname --auto 
./manage.py migrate appname 

하지만 모든 앱은 남쪽과 통합하지

를 사용으로 변경합니다.

프로젝트에 south를 사용하지 않는 새 앱을 추가 할 때 해당 앱에 ./manage.py syncdb으로 전화해야합니다. 응용 프로그램 통합 남쪽 애플 리케이션을위한하지 남쪽 사용, ./manage.py migrate을 수행 할 때 (예를 들어, django.contrib 응용 프로그램) 한마디로

./manage.py syncdb를 사용합니다.

+0

명확한 설명에 감사드립니다. 귀하의 답변을 편집하여 일부 서식을 추가했습니다. –

+3

남쪽에서 syncdb 동작이 변경 될 때까지 남쪽 동작이 혼동스러워졌습니다. 설치된 하나 인 syncdb는 South가 관리하는 앱에 대해 아무런 조작을하지 않습니다. 그래서 당신은 남쪽에 의해 관리되는 몇몇 애플 리케이션을 가지고 있더라도 사이트에서 syncdb를 돌릴 수 있습니다. 처음에 syncdb와 초기 마이그레이션이 일관성이 있다는 것을 처음 설치할 때는주의해야합니다.하지만 일단 그렇게하면 오류가 허용됩니다. – Nils

+1

알아 두어야 할 점은 앱의 모든 조명기가로드되기 전에 사우스 마이 그 레이션이 실행된다는 것입니다. initial_data.json fixture의 행이 이미로드되었다고 가정하는 데이터 마이그레이션을 실행하려고 했으므로 이제 막 건너 왔습니다. – tobych

8

만들거나 새로운 응용 프로그램의 MyApp를 설치하는 경우, 먼저 다음 명령을 실행한다 : 당신이 볼 당신이 ./manage.py syncdb을 실행할 때마다 그 후

./manage.py schemamigration MyApp --inital 
./manage.py migrate MyApp 

:

Syncing... 
Creating tables ... 
Installing custom SQL ... 
Installing indexes ... 
Installed 0 object(s) from 0 fixture(s) 

Synced: 
> south 
> django.contrib.auth 
> django.contrib.contenttypes 
> django.contrib.sessions 
> django.contrib.sites 
> django.contrib.messages 
> django.contrib.staticfiles 
> django.contrib.admin 
> django.contrib.admindocs 

Not synced (use migrations): 
- MyApp 
(use ./manage.py migrate to migrate these) 

당신은 것을 볼 수 있습니다 manage.py syncdb은 사우스 (Not synced 섹션)가 관리하는 앱과 사우스가 관리하지 않는 앱 (Synced 섹션)을 구분할 수 있습니다. 또한 ./manage.py migrate을 사용할 것을 상기시켜줍니다.

중요한 점는 남쪽가 ./manage.py syncdb을 실행하기 전에 ./manage.py schemamigration MyApp --inital./manage.py migrate MyApp을 실행하여 새로운 응용 프로그램을 관리 할 수 ​​있도록하는 것입니다.