2010-05-16 4 views
24

잠시 동안 프로젝트에서 South를 사용하고 있지만 최근에 엄청난 양의 개발 및 변경된 개발 기계를 사용했으며 프로세스에서 엉망이됐다고 생각합니다. 프로젝트는 정상적으로 작동하지만 마이그레이션을 적용 할 수는 없습니다. 나는 다음 역 추적을 얻을 마이그레이션 적용하려고 할 때마다 :사우스 마이 그 레이션 오류 : django.contrib.auth에 대한 NoMigrations 예외

danpalmer:pest Dan$ python manage.py migrate frontend 
Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_manager(settings) 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager 
    utility.execute() 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 303, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 222, in execute 
    output = self.handle(*args, **options) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/management/commands/migrate.py", line 102, in handle 
    delete_ghosts = delete_ghosts, 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 182, in migrate_app 
    applied = check_migration_histories(applied, delete_ghosts) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 85, in check_migration_histories 
    m = h.get_migration() 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 34, in get_migration 
    return self.get_migrations().migration(self.migration) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 31, in get_migrations 
    return Migrations(self.app_name) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 60, in __call__ 
    self.instances[app_label] = super(MigrationsMetaclass, self).__call__(app_label_to_app_module(app_label), **kwds) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 88, in __init__ 
    self.set_application(application, force_creation, verbose_creation) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 159, in set_application 
    raise exceptions.NoMigrations(application) 
south.exceptions.NoMigrations: Application '<module 'django.contrib.auth' from '/Library/Python/2.6/site-packages/django/contrib/auth/__init__.pyc'>' has no migrations. 

나는 한국과 그 경험이 아니에요을 나는 전에이 오류를 충족하지 않았습니다. 내가이 오류에 관해 온라인에서 찾을 수있는 유일한 도움이되는 언급은 0.7 이전에 대한 것이고 나는 남부 0.7에 관한 것입니다. 나는 'easy_install -U South'를 실행했다.

+0

southmigrationhistory 테이블이 있는지 확인하기 위해 syncdb를 먼저 사용 했습니까? 또는 컴퓨터를 옮길 때 DB 덤프를 가져 왔습니까? –

+0

또한 django.contrib.auth는 마이그레이션을 사용하지 않아야합니다 (직접 해킹 할 수있는 경우가 아니면). contrib.auth에 대한 마이그레이션 디렉토리를 수동으로 생성 했습니까? –

+0

나는 syncdb를 시작했다. 데이터베이스는 개발 용 SQLite 데이터베이스를 사용하는 데이터베이스와 동일한 데이터베이스입니다. 두 번째 사항은 아래의 내 솔루션을 참조하십시오. – danpalmer

답변

26

나는이 문제를 해결했다.

당연히 '인증'과 같이 장고에 포함 된 응용 프로그램의 마이그레이션을 수행하기 위해 South를 사용할 수 없습니다. 그래서 그 이유를 알 수 없었습니다.

나는 잠시 동안 auth라는 프로젝트에 다른 앱을 가지고 있다는 것을 깨달았습니다. 이름을 바꾸기 전에 어느 시점에서이 작업을 마이그레이션하려고 했으므로 모든 작업을 망쳤습니다.

해당 앱의 데이터베이스에서 이전 기록 항목을 제거했는데 문제가 없습니다.

+0

동일한 문제가 있지만 댓글 앱이 있습니다. 감사. – zerofuxor

+0

오늘은 메시지 앱과 동일하게 실행합니다. – Jyrsa

+1

장고와 같이 장단점이있는 앱에는 South를 사용할 수 있습니다. 때때로 의미가 있습니다. 내 대답은 아래를 참조하십시오. 수락 된 대답이 정확하지 않을 때 어떻게해야할지 모르겠다. 아마도 내 정답을 포함하도록 답변을 편집 할 수 있을까요? – mrooney

43

내가 최근에 오늘 내 자신의 애플 리케이션 중 하나에이 예외에 달렸다 미래 명의 Google

아닌있는 contrib의 하나 여기를 떠나.

머리 - 긁힘 약간 나는
app/migrations/__init__.py 

이 ... 파이썬 모듈 등 등으로 디렉토리를 가져 질수 즉, 삭제 된 ... 어떻게 든 파일 것을 발견 한 후

+2

예. 매력처럼 일했습니다. – mlissner

+2

고마워, 그것은 나에게도 도움이되었다. – akozin

+2

나를 위해 데이터베이스에 등록 된 마이 그 레이션과'migrations' 디렉토리의 제거 사이에 일관되지 않은 상태였다. 'migrations'와'__init __. py'를 추가하면 문제가 해결됩니다. – gipi

1

나는 또한 동일한 문제가 있었지만, 근본적인 문제가 발생했습니다. 이것이 이전 개발에서 내 프로젝트 루트에 비어있는 models.py으로 인한 것임을 발견했습니다. 프로젝트 응용 프로그램에서도이 문제가 발생할 수 있습니다.

1

내장 모듈에서 마이그레이션을 수행 할 수 있으며, 예를 들어 모든 사용자 이름을 잘라내어 잘못된 전자 메일을 제거하는 등의 데이터 마이그레이션에는 의미가 있습니다.

5

내가 같은 문제가 있었다 ORM [ 'auth.User', 그리고 마지막에 내가 삭제하여이 문제를 해결 : django.contrib.auth.models에서 사용자의 경우

, 단순히 사용 south_migrationhistory 테이블의 모든 행과 터미널에서 다음 명령을 실행하십시오.

python manage.py reset south 

answer은 남쪽 이전 기록을 재설정하는 방법에 대해 설명합니다.

편집 : 장고 1.5에서

년 이후 reset 명령이 작동하지 않습니다. 대신 flush을 사용해야합니다.

플러시에 대해 자세히 알아 보려면 stackoverflow answer을 읽으십시오.

+1

Django 1.5에서는 "reset"명령이 "flush"로 대체되었지만 개별 테이블에서는 flush가 작동하지 않습니다. 이를 위해 이전 리셋 포트를 사용해야합니다. https://github.com/gregmuellegger/django-reset – shacker

0

나는 같은 오류가 있지만 장고 모듈이 아니라 내 virtualenv의 일부인 모듈을 가지고있다. 나는 정말로 어떤 이주도 없었기 때문에 south가 그 모듈을 위해 어떻게 이주를 할 수 있었는지 알지 못했다. 그런 다음 동일한 것으로 생각되는 테스트 환경에서 데이터베이스를 복사했음을 기억합니다. 그러나 그것은 다른 env가 을 수행 한 모듈의 약간 다른 버전을 가지고 있음이 밝혀졌습니다.은 마이그레이션을가집니다. 어쨌든 테스트 환경 이었기 때문에 남쪽 마이그레이션 기록에서 문제가되는 행을 삭제했습니다.

10

난 그냥 나뭇 가지와 응용 프로그램 버전을 swithcing 후이로 달리고, 지금은 django.contrib.admin와 비슷한 문제를했으나,

./manage.py dbshell 

mysql> SELECT * FROM south_migrationhistory WHERE app_name = 'social_auth'; 

104 | social_auth | 0001_initial...                 
105 | social_auth | 0002_auto__add_unique_nonce... 


mysql> DELETE FROM south_migrationhistory WHERE app_name = 'social_auth'; 
Query OK, 2 rows affected (0.00 sec) 
+0

이 기능은 리셋/재시작 대신 단일 응용 프로그램 마이그레이션 만 삭제하려는 경우 신속하게 해결됩니다. 남쪽 모두를 물로 씻는다. – andyzinsser

+0

나는 OP hehe가 환호가 아닐지라도이 굉장한 내 문제를 해결했다. – NeoVe

0

south_migrationhistory 테이블에서 더 마이그레이션 없었다 응용 프로그램을 제거하기로 결정 마이 그 레이션을 실행할 수있게 해줍니다. django.contrib.admin을 설정에서 해제하여 문제를 해결했습니다 .INSTALLED_APPS

관련 문제