Problema no teste do Django 1.8: ProgrammingError: a relação “auth_user” não existe
Atualizei recentemente o Django para 1.8 e configurei um novo banco de dados de desenvolvimento para um novo começo. Migrações e dependências correram bem, protegendo os erros comuns que você recebe e acaba resolvendo. O aplicativo está funcionando localmente agora muito bem.
No entanto, estou recebendo um erro ao tentar executar testes:
python manage.py test
Este é o erro que estou recebendo:
django.db.utils.ProgrammingError: relation "auth_user" does not exist
Desnecessário dizer que o módulo de autenticação do Django é realmente instalado e migrado no aplicativo, então não tenho certeza do que está acontecendo.
Aqui está o stacktrace completo, caso você precise dar uma espiada, mas não diz nada remotamente útil para descobrir a causa desse erro:
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
Eu posso descobrir uma solução alternativa a seguiresta resposta o que impede a execução da tarefa de testemigrate
, que de acordo com o que tenho lido deve ser o ponto em que o erro ocorre. Estranho o suficiente, desde quando eu corromigrate
tudo está bem.
No entanto, eu preferiria não recorrer a uma solução alternativa atrevida e continuar fazendo as coisas como elas são projetadas. Além disso, esse erro pode ser uma dica de que outra coisa está realmente errada e deve ser corrigida.
Algumas soluções sugerem a execução:
python manage.py migrate auth
python manage.py migrate
Mas isso não faz nada, pois não há migrações pendentes no meu projeto.
Como posso resolver esse problema misterioso?