2013-05-24 1 views
1

'competencies'라는 앱을 만들고 있습니다. 모델을 변경하고 로컬에서 앱을 이전했으며 모든 것이 효과가있었습니다. 이것은 앱에서 8 번째 마이 그 레이션입니다.Django에서 NoMigrations 오류가 발생했습니다.

나는 heroku에 응용 프로그램을 배포 했으므로 변경 사항을 적용하고 heroku로 푸시했습니다. 새 마이그레이션이 heroku 파일에 나타나기 때문에 변경 사항이 완료되었음을 알 수 있습니다. 내가 Heroku가에 로그인하고 역량 응용 프로그램을 마이그레이션 할 때, 나는 다음과 같은 오류 얻을 :이 오류 검색 한

NoMigrations: Application '<module 'django.contrib.admin' from '/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/__init__.py'>' has no migrations. 

을, 나는 의미 아무것도 발견하지 않았습니다. 누구든지 내가 뭘 잘못하고 있는지 또는 문제를 해결하는 방법을 제안 할 수 있습니까?

+0

당신은 어떤 장고 모델에 남쪽으로 마이그레이션을 적용 않았다 포함한 모든 앱? 'django.contrib.auth'와 같은가요? – karthikr

+0

내가 이전 한 다른 앱은 admin입니다. – japhyr

+0

그게 문제라고 생각합니다. virtualenv를 사용하고 있습니까? 장고 앱에 마이그레이션을 적용하는 것은 좋지 않습니다. – karthikr

답변

0

django.contrib.admin은 마이그레이션 할 수 없습니다. 기여 패키지는 남부 관리 대상이 아닙니다.

로컬에서 python manage.py schemamigration django.contrib.auth --XXX을 실행 한 경우 로컬 복사본의 venv의 django 설치에 migrations 폴더가 생성됩니다. 그러나 이것은 결코 영웅에게 전가되지 않습니다.

나를 위해 시험해보십시오.

  • 새로운 DB를 로컬 컴퓨터에서 사이트의 새 복사본을 만들
  • 새로운 VIRTUALENV
  • 새 폴더의 repo의 새로운 클론 같은 얻는 경우 python manage.py migrate를 실행하는

시도/w 오류가 b/c 당신은 당신의 virtualenv 남쪽으로 파산.

데이터베이스 모델은 마지막 작업 복사본부터 무리를 변경하지 않은 경우 당신이 시도 할 수 밖에

뭔가 :

  • 롤 다시 마지막 작업 구성
  • 삭제 EVERY 응용 프로그램의 마이그레이션 폴더로 모델
  • 각 앱에 대해 south_migrations 테이블
  • python manage.py schemamigration --initial X을 잘라냅니다.
  • 푸시 및
  • migrate --fake이 모델은
  • 모델이
  • 푸시 변경에 대한 마이그레이션을 만들고위한 dev에 상자로 라이브 데이터베이스를 덤프 후 나는 최근에이 오류가 발생
+0

한순간에 관리자를 마이그레이션하려고 시도했는데 django/contrib/admin에 migrations 폴더가 있습니다. 나는 한 지점에서 영웅 세션의 관리자를 마이그레이션하려고 시도했을 수도 있다고 생각합니다. 나는 heroku app을 파괴하고 그것을 재건하는 것을 고려했다. 어쨌든 테스트 배포라고 생각하면 합리적인 계획입니까? – japhyr

+2

contrib/dependency 패키지의 마이그레이션을 계속 유지하면서'SOUTH_MIGRATION_MODULES = { 'admin', ' .migrations.admin'}' –

+0

@Hedde http : //south.readthedocs를 사용하십시오.org/ko/latest/settings.html # south-migration-modules 나는 이것을 알지 못했다. 일반적으로 장고 피규어에서이 기능을 사용하는 것은 좋은 생각이 아닙니다. 장래의 보안 문제를 해결할 수 있기 때문입니다. –

0

정기적으로 마이그레이션 변경 다시 실행 데이터 마이그레이션을 테스트합니다.

종속성 중 하나가이 오류 (특히 taggit)를 던졌습니다. 나는 taggit의 다른 버전을 마이그레이션이없는 개발 상자에 가지고 있다고 생각하지만, 덤프 한 데이터베이스는 taggit에 대한 두 가지 마이그레이션이 south_migrationhistory에있었습니다.

내가 실수로 NoMigrations이라고 주장하는 문제 앱에 대해 south_migrationhistory의 항목을 삭제했으며 문제가 해결되었습니다. 모든 것이 다시 실행 중입니다.

0

south.exceptions.NoMigrationsmigrations 디렉토리가 변경되어 2014 (Django 1.7) 이후에 예외가되는 경우가 많습니다. 디렉토리는 Django가 마이그레이션에 내장되어있을 때 기본값입니다.

남쪽 마이그레이션의 경우 디렉토리는 south_migrations입니다. South>=1.0이이를 인식하고 자동으로 마이그레이션을 감지 할 수 있습니다. 자세한 내용은 here on Django docs이 경우

, South을 업데이트 참조 :

pip install -U South 

을 또는 당신은 또한 설정 파일에 마이그레이션 디렉토리를 지정할 수 있습니다 (모든 앱 설치).

0

나는 Kombu와 관련된 홀수 인 경우를 발견했습니다.

내가 우분투 14.04에 기존 장고 1.5 프로젝트를 유지하고있어, 나는 이전에 다시마 멋지게 플레이를 할 수있는이 설정을했다 :

SOUTH_MIGRATION_MODULES = { 
    'kombu_transport_django': 'kombu.transport.django.south_migrations', 
} 

을 그러나, 나는 우분투 16로 업그레이드 후를 약간 있었다 Kombu를 다시 부러 뜨린 파이썬 stdlib에서 개조하기. 다시마를 업그레이드하는 유일한 즉각적인 해결책이었다, 그러나 그것은 나에게 뭘 발견 영업 이익과 유사한 다른 다시마 오류 준 :

NoMigrations: Application '<module 'kombu.transport.django' from '/myproject/.env/local/lib/python2.7/site-packages/kombu/transport/django/__init__.pyc'>' has no migrations. 

이 오류 메시지는 거의 쓸모입니다,하지만 난 결국 문제는 내 SOUTH_MIGRATION_MODULES 설정 깨달았다. 이전 kombu.transport.django.south_migrations이 제거되었으며이 누락 된 마이그레이션 디렉토리를 가져 오려는 South가 오류의 원인이었습니다. 수정은 해당 행을 제거하는 것이 었습니다.

0

는 NoMigrations 오류가 자주 장고 버전을 다운 그레이드 할 경우 나타 pip install --upgrade django

보십시오.

내 경우에는 현재의 장고 버전을 자동으로 제거하고 다운 그레이드 한 패키지를 설치했습니다.

업데이트 된 버전을 설치하는 것이 신속하게 해결되었습니다.

또한, 당신은 당신이 포함되어있는 경우 INSTALLED_APPS에서 확인 할 수 'django.contrib.auth''django.contrib.admin'