2017-10-13 47 views
0

최근 Django를 1.8로 업그레이드하고 새로운 시작을위한 새로운 개발 데이터베이스를 설정했습니다. 마이그레이션 및 종속성은 잘되었고, 평소와 같은 오류는 안전하고 결국 해결하게됩니다. 응용 프로그램은 이제 로컬로 잘 작동합니다.Django 1.8 테스트 문제 : ProgrammingError : relation "auth_user"가 존재하지 않습니다.

python manage.py test 

이 내가 점점 오전 오류입니다 : 테스트를 실행하려고 할 때

그러나, 나는 오류를 얻고있다

django.db.utils.ProgrammingError: relation "auth_user" does not exist 

말할 필요를, 장고의 인증 모듈이 실제로 설치되어 있고 앱에서 이전되어서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 여기

당신이 그것을 훔쳐해야 할 경우 전체 스택 트레이스이지만,이 오류의 원인을 알아 내기 위해 나에게도 원격으로 도움이 아무 말도 does't :

Traceback (most recent call last): 
    File "C:/Users/dabadaba/PycharmProjects/dogpatchsports_com/mysite/manage_sched_dev.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 354, in execute_from_command_line 
    utility.execute() 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 346, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 30, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 394, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 74, in execute 
    super(Command, self).execute(*args, **options) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 445, in execute 
    output = self.handle(*args, **options) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\test.py", line 90, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 210, in run_tests 
    old_config = self.setup_databases() 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 166, in setup_databases 
    **kwargs 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\test\runner.py", line 370, in setup_databases 
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True), 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\base\creation.py", line 368, in create_test_db 
    test_flush=not keepdb, 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\__init__.py", line 120, in call_command 
    return command.execute(*args, **defaults) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\base.py", line 445, in execute 
    output = self.handle(*args, **options) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\migrate.py", line 179, in handle 
    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\core\management\commands\migrate.py", line 318, in sync_apps 
    cursor.execute(statement) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\utils.py", line 98, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "C:\Users\dabadaba\Envs\django18\lib\site-packages\django\db\backends\utils.py", line 62, in execute 
    return self.cursor.execute(sql) 
django.db.utils.ProgrammingError: relation "auth_user" does not exist 

내가 알아낼 수 테스트 과제가 migrate에서 실행되는 것을 방지하는 this answer 다음의 해결 방법은 내가 읽었던 것에 따라 오류가 발생한 지점이어야합니다. 이상하게도, migrate을 실행하면 모든 것이 정상입니다.

그러나 나는 건방진 해결 방법에 의지하지 않고 디자인대로 작업을 수행하는 것을 선호합니다. 또한이 오류는 다른 것이 실제로 잘못되어 고쳐 져야한다는 힌트 일 수 있습니다.

일부 솔루션은 실행중인 제안 :

python manage.py migrate auth 
python manage.py migrate 

을하지만 내 프로젝트에 보류중인 마이그레이션이 없기 때문에 그 아무것도하지 않습니다.

이 신비한 문제를 어떻게 해결할 수 있습니까?

답변

1

당신이 auth.User에 외래 키를 가지고있는 애플 리케이션을 가지고 있다면, 그 애플리케이션에 대한 초기 마이그레이션이 인증 응용 프로그램에 dependency이 있는지 확인하십시오 :

class Migration(migrations.Migration): 

    dependencies = [('auth', '__first__')] 
+0

자들은 분명히이 종속성이'migrations.swappable_dependency을 (settings.AUTH_USER_MODEL)' – dabadaba

+0

커스텀 사용자 모델이 있습니까? – Alasdair

+0

afaik 우리는 장고의 기본 사용자를 사용하고 있습니다. 그러나 여기에 내가 방금 알아 낸 것이 있습니다, 이상하다고 생각하십니까? : 이것은 우리 모델 중 하나 인 admins = models.ManyToManyField ('auth.User')'속성입니다. 그런 다음 쉘에서 해당 모델의 인스턴스를 db에서 가져오고'django.contrib.auth.models.User'를 출력 한 instance.admins.first()의 형식을 출력합니다. 그렇다면 그 속성은'auth.User'로 어떻게 정의됩니까? 아마 이것이 Django 업그레이드로 인한 오류일까요? 그러나 마이그레이션은 처음부터 어떻게 작동 했습니까? 여기 이상한 걸 보니? – dabadaba

관련 문제