django.db.utils.OperationalError: no such table: auth_user

После того, как я установил Django-userena, в моей версии django возникает ошибка:1.9.5 Я просто устанавливаю django-userena шаг за шагом, но когда я ее переношу, возникает ошибка, и я не понимаю, как ее решить.

    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

Программы:

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',    
]

7 ответов

./manage.py migrate

если ваша версия Django 1.9 или ниже, используйте

./manage.py syncdb

затем

python manage.py createsuperuser

более подробная информация на https://github.com/django/django/blob/master/django/contrib/auth/forms.py

Пусть это поможет

      python manage.py migrate --run-syncdb

Это увидит, какие таблицы не были созданы, и создаст все необходимые таблицы. Надеюсь, это поможет тебе!

Я получил ту же ошибку и, чтобы исправить то же самое, я проверил, присутствует ли упомянутая таблица с ошибкой в ​​подключенной БД или нет. Не было. Снова применили миграцию и все заработало.

python manage.py migrate

python manage.py makemigrations

Проблема в этой строке:

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

guardian\management\__init__.py звонит User прежде чем это будет определено.

Почему это называется до того, как оно будет определено?... ну, это называется makemigrations чтобы выяснить, есть ли изменения в db определить их (найденные изменения)

... так что это проблема "курица и яйцо".

У меня та же ошибка с похожей проблемой, но код, который нарушал, был моим собственным кодом (не библиотека, как guardian)

Мой код был такой:

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

Оскорбительная часть User используется до auth_user таблица создана

Я решил только выполнение кода, когда таблица присутствует. Это происходит, когда нет OperationError, И вы можете узнать это с try/except как это:

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()

Сюда makemigrations управляет except код и runserver управляет try код.

Обратите внимание created логическое, вы можете использовать любой другой способ избежать makemigration запустить код, который зависит от User.objects.... Результаты

Я столкнулся с такой же ошибкой при работе с чатами. Я решил использовать удаление файла db.sqlite3 и удаление файла 0001_initial.py в папке миграции приложения, а затем я выполнил следующие инструкции: -

      python manage.py makemigrations
python manage.py migrate

тогда я смог создать суперпользователя, используя

      python manage.py createsuperuser

Это ошибка устранена!

ЗАПУСК: python3 manage.py migrate

Это происходит всякий раз, когда таблицы не созданы или недоступны в базе данных, на которую указывает это приложение. settings.py.

Поэтому создайте файлы миграции с помощью этой команды:

      python manage.py makemigrations

После создания файлов миграции их необходимо перенести:

      python manage.py migrate

Если это не работает, используйте:

      python manage.py makemigrations yourappname
python manage.py migrate yourappname
Другие вопросы по тегам