简体   繁体   中英

django.db.utils.ProgrammingError: relation “auth_user” does not exist

When trying to do a syncdb in Django it fails with the follow traceback. I've tried deleting the schema and creating a clean one. migrate creates the migration but it never creates any of the tables outside of django_migrations . I've also deleted all existing pyc files as a precaution but no luck. It doesn't seem to be creating any of the tables on initial sync. Currently not dealing with any models outside of the core tables created (auth, sessions, etc.)

System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
    HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
    HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
Operations to perform:
  Synchronize unmigrated apps: oauth2_provider, core, django_admin_bootstrapped, rest_framework_swagger, rest_framework, django_admin_bootstrapped_bootstrap3
  Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
  Installing custom SQL...
  Installing indexes...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying sessions.0001_initial... OK
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 533, in handle
    return self.handle_noargs(**options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/syncdb.py", line 36, in handle_noargs
    if not UserModel._default_manager.exists() and options.get('interactive'):
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 92, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 606, in exists
    return self.query.has_results(using=self.db)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py", line 445, in has_results
    return compiler.has_results()
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 757, in has_results
    return bool(self.execute_sql(SINGLE))
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 786, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 81, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "auth_user" does not exist
LINE 1: SELECT (1) AS "a" FROM "auth_user" LIMIT 1

I was having this problem in Django 1.8, where I'm using a custom user profile which I, as recommended in the documentation, created with a OneToOneField to the user.

Luckily, I isolated the user profile code in a separate app which I called "profile".

For me, this workaround solved the problem:

  • Disable the custom user profile by disabling the "profile" app in settings.py by removing it from INSTALLED_APPS
  • Run python manage.py migrate
  • Re-enable the custom user profile by re-inserting the app.

This is most certainly due to a bug in Django.

I had very similar issue. Eventually I've discovered that not all of my apps had migrations. So check if all of your installed apps (Django project wise) which have models.py files have migrations as well. That solved my issue (forcing Django to create migrations for specific app) and also checking that migrations.swappable_dependency(settings.AUTH_USER_MODEL), is listed and on the first position in migration dependencies.

This error occurs with the multiple databases I had setup with my previous version of django (1.5). The upgrade did not take to the multiple databases with south. Eventually I will have to re-visit this so that I can attempt migrations but in the meantime I have scrapped this. Removing the multiple database instances in my settings.py resolved the issue.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM