최근 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
을하지만 내 프로젝트에 보류중인 마이그레이션이 없기 때문에 그 아무것도하지 않습니다.
이 신비한 문제를 어떻게 해결할 수 있습니까?
자들은 분명히이 종속성이'migrations.swappable_dependency을 (settings.AUTH_USER_MODEL)' – dabadaba
커스텀 사용자 모델이 있습니까? – Alasdair
afaik 우리는 장고의 기본 사용자를 사용하고 있습니다. 그러나 여기에 내가 방금 알아 낸 것이 있습니다, 이상하다고 생각하십니까? : 이것은 우리 모델 중 하나 인 admins = models.ManyToManyField ('auth.User')'속성입니다. 그런 다음 쉘에서 해당 모델의 인스턴스를 db에서 가져오고'django.contrib.auth.models.User'를 출력 한 instance.admins.first()의 형식을 출력합니다. 그렇다면 그 속성은'auth.User'로 어떻게 정의됩니까? 아마 이것이 Django 업그레이드로 인한 오류일까요? 그러나 마이그레이션은 처음부터 어떻게 작동 했습니까? 여기 이상한 걸 보니? – dabadaba