django.db.utils.OperationalError: no such table: auth_user
Asked Answered
S

7

11

After I install Django-userena,there is an error my django version :1.9.5 I just install django-userena step by step ,but when i migrate it ,an error happend and I don't how to solve it.

    Traceback (most recent call last):
  File "manage.py", line 12, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle
    emit_post_migrate_signal(self.verbosity, self.interactive, connection.alias)
  File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 50, in emit_post_migrate_signal
    using=db)
  File "C:\Python27\lib\site-packages\django\dispatch\dispatcher.py", line 192, in send
    response = receiver(signal=self, sender=sender, **named)
  File "C:\Python27\lib\site-packages\guardian\management\__init__.py", line 33, in create_anonymous_user
    User.objects.get(**lookup)
  File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 381, in get
    num = len(clone)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 240, in __len__
    self._fetch_all()
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1074, in _fetch_all
    self._result_cache = list(self.iterator())
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 52, in __iter__
    results = compiler.execute_sql()
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 848, in execute_sql
    cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py", line 323, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: auth_user

apps:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',

    'userena',
    'guardian',
    'easy_thumbnails',
    'accounts',    
]
Skivvy answered 22/8, 2016 at 3:42 Comment(1)
It looks like the application guardian queries the ORM in a situation where the DB is not available yet. That's a bug, you should report it.Pavyer
A
16
./manage.py migrate

if your Django version is 1.9 or lower, use

./manage.py syncdb

then

python manage.py createsuperuser

more details on https://github.com/django/django/blob/master/django/contrib/auth/forms.py

May it help

Alcot answered 9/10, 2016 at 14:0 Comment(0)
E
7
  python manage.py migrate --run-syncdb  

This command will look into which tables were not created and will create all the needed tables.

Extensometer answered 19/2, 2021 at 20:42 Comment(3)
You're welcome, i'm happy that my comment was useful.Extensometer
the underrated solution, I was getting crazy, thank you.Acrocarpous
@SalahRashad You're welcome! I'm happy that my comment is still useful.Extensometer
F
6

I was get same error and to fix the same, I checked if the mentioned table in error is present in connected DB or not. It was not. Applied migration again and it worked.

python manage.py migrate

python manage.py makemigrations
Flection answered 1/11, 2018 at 19:43 Comment(0)
F
4

The problem is this line:

File "C:\Python27\lib\site-packages\guardian\management\__init__.py", line 33, in create_anonymous_user User.objects.get(**lookup)

guardian\management\__init__.py is calling User before it is defined.

Why is it called before it is defined? ...well, it is called by makemigrations to find out if there are changes in the db to define them (the changes that are found)

...so this is a "chicken and egg" problem.

I have the same error with a similar problem but the offending code was my own code (not a library like guardian)

My code was like this:

CHAT_BOT_USER, created = User.objects.get_or_create(username='rosty', \ email=settings.EMAIL_HOST_USER)

The offending part is the User being used before the auth_user table is created

I solved by only executing the code when the table is present. This happens when there is no OperationError. And you can know it with a try/except like this:

from django.db import OperationalError

try:
    CHAT_BOT_USER, created = User.objects.get_or_create(username='rosty', email=settings.EMAIL_HOST_USER)

except OperationalError:
    CHAT_BOT_USER = None

if created:
    CHAT_BOT_USER.set_password(settings.EMAIL_HOST_PASSWORD)
    CHAT_BOT_USER.save()

This way makemigrations runs the except code and runserver runs the try code.

Note the created boolean, you may use any other way to avoid makemigration run code that depends on the User.objects.... results

Flowerpot answered 20/6, 2017 at 8:24 Comment(0)
L
0

RUN: python3 manage.py migrate

Ludwick answered 24/5, 2020 at 12:27 Comment(0)
K
0

I have came across same error while working with chatrooms. I resolved using deleting the db.sqlite3 file and deleting the 0001_initial.py file in the migrations folder of the app and then i executed the following statements:-

python manage.py makemigrations
python manage.py migrate

then i was able to create a superuser using

python manage.py createsuperuser

Thats it error resolved!

Knowles answered 24/3, 2021 at 5:39 Comment(0)
A
0

This occurs whenever the tables are not created, or the tables are not available in the database to which this application is pointed in settings.py.

So create the migration files by using this command:

python manage.py makemigrations

After the migration files are created, you need to migrate them:

python manage.py migrate

If it doesn't work then use:

python manage.py makemigrations yourappname
python manage.py migrate yourappname
Asia answered 12/11, 2021 at 11:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.