Джанго - Нет такой таблицы: main.auth_user__old - PullRequest
0 голосов
/ 05 декабря 2018

Я следовал первому руководству по приложению из официальных документов Django и получил эту ошибку при попытке сохранить некоторые изменения, сделанные через страницу администратора.Я провел некоторые исследования, но возможные решения, которые я смог найти, такие как перенос базы данных, просто не сработают.Просто дайте мне знать, если вы хотите увидеть какую-то конкретную часть моего кода.

Ниже приведена ошибка:

OperationalError в / admin / polls / question / 1 / change / no suchtable: main.auth_user__old Метод запроса: URL запроса POST: http://127.0.0.1:8000/admin/polls/question/1/change/ Версия Django: 2.1.4 Тип исключения: OperationalError Значение исключения: нет такой таблицы: main.auth_user__old Расположение исключения: / Users / gfioravante / Projects / test_app /ta_env / lib / python3.7 / site-packages / django / db / backends / sqlite3 / base.py в файле execute, строка 296 Исполняемый файл Python: / Users / gfioravante / Проекты / test_app / ta_env / bin / python3 Версия Python: 3.7.1 Python Path:
['/ Users / gfioravante / Projects / test_app / test_app', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',' /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7 ',' /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework / Versions / 3.7 / lib / python3.7 / lib-dynload ',' / Users / gfioravante / Проекты / test_app / ta_env /lib / python3.7 / site-packages '] Время сервера: среда, 5 декабря 2018 г. 16:45:00 + 0000

и трассировка:

Среда:

Метод запроса: URL запроса POST: http://127.0.0.1:8000/admin/polls/question/1/change/

Версия Django: 2.1.4 Версия Python: 3.7.1 Установленные приложения: ['polls.apps.PollsConfig', 'django.contrib.admin ',' django.contrib.auth ',' django.contrib.contenttypes ',' django.contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles '] Установленное промежуточное ПО: [' django,',' django.contrib.messages.middleware.MessageMiddleware ',' django.middleware.clickjacking.XFrameOptionsMiddleware ']

Отслеживание:

Файл "/ Users / gfioravante / Projects / test_app / ta/lib/python3.7/site-packages/django/db/backends/utils.py "яn _execute 85. вернуть self.cursor.execute (sql, params)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3 / base.py "в execute 296. return Database.Cursor.execute (self, query, params)

Вышеуказанное исключение (нет такой таблицы: main.auth_user__old) было прямой причиной следующего исключения:

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" во внутреннем 34. response = get_response (запрос)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" в _get_response 126. response = self.process_exception_by_middleware (например,запрос)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" в _get_response 124. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл "/ Пользователи / gfioravante / Проекты /test_app / ta_env / lib / python3.7 / site-packages / django / contrib / admin / options.py "в оболочке 604. вернуть self.admin_site.admin_view (view) (* args, ** kwargs)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" в _wrapped_view 142. response = view_func (request, * args, ** kwargs)

Файл"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py" в _wrapped_view_func 44. response = view_func (request, * args, ** kwargs)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" во внутреннем 223. возвращаемое представление (request, * args,** kwargs)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в change_view 1640. вернуть себя.changeform_view (запрос, object_id, form_url, extra_context)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" в _wrapper 45. return bound_method (* args, ** kwargs)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py" в _wrapped_view142. response = view_func (request, * args, ** kwargs)

File "/ Users / gfioravante / Projects / test_app / ta_env / lib / python3.7 / site-packages / django / contrib / admin / options.py "в changeform_view 1525. вернуть self._changeform_view (запрос, идентификатор_объекта, form_url, extra_context)

File" / Users / gfioravante / Projects / test_app /ta_env / lib / python3.7 / site-packages / django / contrib / admin / options.py "в _changeform_view 1571. self.log_change (запрос, новый_объект, change_message)

Файл" / Users / gfioravante / Проекты/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py "в log_change 826. change_message = message,

File" / Users / gfioravante / Projects / test_app /ta_env / lib / python3.7 / site-packages / django / contrib / admin / models.py "в log_action 35. change_message = change_message,

File" / Users / gfioravante / Проекты / test_app / ta_env / lib/python3.7/site-packages/django/db/models/manager.py "в manager_method 82. return getattr (self.get_queryset (), name) (* args, ** kwargs)

File"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py "в создании 413. obj.save (force_insert = True, используя = self.db)

Файл" /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py "в save 718. force_update = force_update, update_fields = update_fields)

Файл" /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages / django / db / models / base.py "в save_base 748. updated = self._save_table (raw, cls, force_insert, force_update, using, update_fields)

Файл" / Users / gfioravante / Projects / test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py "в _save_table 831. result = self._do_insert (cls._base_manager, с использованием полей, update_pk, raw)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" в _do_insert 869. using = using, raw = raw)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" в manager_method 82. return getattr (self.get_queryset (), name) (* args, ** kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py "в _insert 1136. вернуть query.get_compiler (using = using) .execute_sql (return_id)

File" /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django / db / models / sql / compiler.py "в execute_sql 1289. cursor.execute (sql, params)

Файл"/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в execute 100. return super (). Execute (sql, params)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в execute 68. вернуть self._execute_with_wrappers (sql, params, many= False, executor = self._execute)

Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в _execute_with_wrappers77. вернуть исполнителя (sql, params, many, context)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py "in _execute 85. вернуть self.cursor.execute (sql, params)

File" /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py "in выход 89. поднять dj_exc_value.with_traceback (traceback) из exc_value

File" / Users / gfioravante / Проекты / test_app / ta_env / lib /python3.7 / site-packages / django / db / backends / utils.py "в _execute 85. вернуть self.cursor.execute (sql, params)

File" / Users / gfioravante / Projects / test_app /ta_env / lib / python3.7 / site-packages / django / db / backends / sqlite3 / base.py "в execute 296. return Database.Cursor.execute (self, query, params)

Тип исключения:OperationalError в / admin / polls / question / 1 / change / Exception Value: нет такой таблицы: main.auth_user__old

Ответы [ 20 ]

0 голосов
/ 22 мая 2019

Что вы можете сделать, это просто зайти в базу данных с помощью браузера sqlite3 и изменить таблицу ссылок, используя соответствующий атрибут с auth_user__old на auth_user.Это сработало для меня, и мой проект работает нормально.

0 голосов
/ 20 марта 2019

У меня была та же проблема, за исключением того, что у меня было 2 базы данных sqlite и пользовательский маршрутизатор базы данных.Мне удалось заставить его работать, понизив Django до 1.11.20, и мне не нужно было пересоздавать базы данных.

0 голосов
/ 25 апреля 2019

Обновите версию Django с версии 2.1 и выше.Я обновился до 2.1.8.Работал на меня!

Приветствия .....

0 голосов
/ 20 февраля 2019

Я решил проблему, обновив Django с 2.1.4 до 2.1.5, но мне пришлось пересобрать проект заново, потому что ошибка, похоже, как-то связана с объектами, которые я вставил в базу данных, используя старую версиюДжанго.

0 голосов
/ 05 марта 2019

перейдите в эту папку django / db / backends / sqlite3

сделайте резервную копию файла schema.py в другую папку

откройте исходный файл schema.py в текстовом редакторе

там вы можете увидеть фрагмент кода, например

    def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
     # disabled. Enforce it here for the duration of the schema edition.
     if not self.connection.disable_constraint_checking():
         raise NotSupportedError(
             'SQLite schema editor cannot be used while foreign key '
             'constraint checks are enabled. Make sure to disable them '
             'before entering a transaction.atomic() context because '
             'SQLite3 does not support disabling them in the middle of '
             'a multi-statement transaction.'
         )
     self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
     return super().__enter__()

, прокомментируйте их и вставьте следующий фрагмент кода

     def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
    # disabled. Enforce it here for the duration of the transaction.
    self.connection.disable_constraint_checking()
    self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
    return super().__enter__()

Это сработало для меня.(резервная копия для schema.py на случай, если работа идет не так; D)

для получения дополнительной информации

https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef

спасибо

0 голосов
/ 22 июля 2019

вам нужно обновить Django, эта проблема была исправлена ​​в этом PR https://github.com/django/django/pull/10733

0 голосов
/ 05 декабря 2018

Open => / YourAppFolder / migrations / Вы бы увидели, как мигрирующие файлы, такие как ' 0001_initial.py ', удалили все эти файлы.И выполните следующую команду 1- python manage.py makemigrations 2- python manage.py migrate Надеюсь, она должна решить вашу проблему

0 голосов
/ 04 января 2019

Пожалуйста, уменьшите версию django до 1.5 или, если вы не хотите понижать версию, вы можете изменить schema.py локально, применить команду patch и запустить команду makemigrations + migrate, но это не рекомендуется.

0 голосов
/ 07 января 2019

То же самое случилось со мной, очень расстраивает.Я использую anaconda для своих сред, я обнаружил, что не могу удалить sqlite без немедленной переустановки самой последней версии sqlite.Попытка старой версии django тоже не сработала.Единственное решение, которое сработало для меня, это использование базы данных PostgreSQL.Это, конечно, не идеально, но я планирую использовать базу данных PostgreSQL в будущем, так что это не было пустой тратой времени.Если вы окажетесь в том же месте, где я находился, тогда это видео может быть полезно, если вы хотите узнать, как подключить базу данных PostgreSQL к вашему проекту django.

Вам понадобитсяУстановите базу данных postgreSQL перед тем, как вносить изменения в settings.py, установка более менее щелкает Далее по всем опциям.Однако запомните имя пользователя и пароль, которые вы используете во время установки.

0 голосов
/ 22 декабря 2018

Проблема вызвана измененным поведением оператора ALTER TABLE RENAME в SQLite 3.26.0 (см. примечание о совместимости ).Они также представили оператор PRAGMA legacy_alter_table = ON для обеспечения совместимости с предыдущими версиями.В следующем выпуске Django 2.1.5 в качестве исправления используется ранее упомянутое утверждение.Ожидается 1 января 2019 года.

...