Я следил за первым руководством по приложению из официальных документов Django и получил эту ошибку при попытке сохранить некоторые изменения, сделанные через страницу администратора. Я провел некоторое исследование по этому поводу, но возможные решения, которые мне удалось найти, такие как миграция базы данных, просто не сработают. Просто дайте мне знать, если вы хотите увидеть какую-то конкретную часть моего кода.
Ниже приводится ошибка:
OperationalError в / admin / polls / question / 1 / change / нет такой таблицы: 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 / Projects / test_app / ta_env / bin / python3 Версия Python: 3.7.1 Путь к Python:
['/ 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/Projects/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.middleware.security.SecurityMiddleware ',' django.contrib.sessions.middleware.SessionMiddleware ',' django .middleware.common.CommonMiddleware ',' django.middleware.csrf.CsrfViewMiddleware ',' django.contrib.auth.middleware.AuthenticationMiddleware ',' django.contrib.messages.middleware.MessageMiddleware ',' django. ']
Проследить:
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в _execute 85. return self.cursor.execute (sql, params)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" при выполнении 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 (e, request)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" в _get_response 124. response = wrapped_callback (request, * callback_args, ** callback_kwargs)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в оболочке 604. return self.admin_site.admin_view (view) (* args, ** кваргс)
Файл "/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. представление возврата (запрос, * args, ** kwargs)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в change_view 1640. return self.changeform_view (request, 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_view 142. response = view_func (request, * args, ** kwargs)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в changeform_view 1525. return self._changeform_view (request, object_id, form_url, extra_context)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в _changeform_view 1571. self.log_change (request, new_object, change_message)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" в log_change 826. change_message = message,
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py" в log_action 35. change_message = change_message,
Файл "/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) (* аргументы, ** kwargs)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" в create 413. obj.save (force_insert = True, using = self.db )
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" в сохранении 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 , используя, 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, using, fields , 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) (* аргументы, ** kwargs)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py" в _insert 1136. return query.get_compiler (using = using) .execute_sql (return_id )
Файл "/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" при выполнении 100. return super (). Execute (sql, params)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" при выполнении 68. return self._execute_with_wrappers (sql, params, many = False, исполнитель = self._execute)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в _execute_with_wrappers 77. исполнитель возврата (sql, params, many, context)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в _execute 85. return self.cursor.execute (sql, params)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" на выходе 89. Поднимите dj_exc_value.with_traceback (трассировка) из exc_value
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" в _execute 85. return self.cursor.execute (sql, params)
Файл "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py" при выполнении 296. return Database.Cursor.execute (self, query, params)
Тип исключения: OperationalError в / admin / polls / question / 1 / change / Exception Value: нет такой таблицы: main.auth_user__old
источник
python manage.py showmigrations
посмотрите, какие миграции не были выполненыОтветы:
Я сам столкнулся с этим, похоже, это связано с https://code.djangoproject.com/ticket/29182 . На данный момент вы можете просто понизить свою версию sqlite до версии до 2.6 (например, 2.5.1).
источник
Избавьтесь от этой проблемы легко, выполнив следующие действия:
pip install django==2.1.5
python manage.py makemigrations
а затемpython manage.py migrate
python manage.py runserver
СДЕЛАННЫЙ!
источник
Просто сделал это, и проблема была решена:
Потом:
источник
Вот что я сделал для решения этой проблемы:
Заходим в виртуальную среду и устанавливаем
django@2.1.7
pip install django==2.1.7
Удалите
db.sqlite3
файл в корневой папке.db.sqlite3
в своей корневой папке.Повторно запустить миграции:
Теперь все должно работать нормально.
источник
Проблема вызвана измененным поведением
ALTER TABLE RENAME
оператора в SQLite 3.26.0 (см. Примечание о совместимости ). Они также ввелиPRAGMA legacy_alter_table = ON
заявление, чтобы сохранить совместимость с предыдущими версиями. В следующем выпуске Django 2.1.5 в качестве исправления используется ранее упомянутая инструкция. Ожидается 1 января 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/commit/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef
источник
Я решил проблему, обновив Django с 2.1.4 до 2.1.5, но мне пришлось пересобрать проект заново, потому что ошибка, похоже, каким-то образом связана с объектами, которые я вставил в базу данных, используя старую версию Django.
источник
Вот так.
источник
для меня это было из моей версии django (это было 2.1) установить более высокую версию (я использовал 2.1.5 по некоторым причинам) ** удалите db.sqlite3 и все в папке миграции, кроме команды запуска init .py:
pip install django==2.1.5 --upgrade python manage.py makemigrations python manage.py migrate python manage.py createsuperuser python manage.py runserver
источник
То же самое произошло и со мной, и это очень расстраивает. Я использую anaconda для своих сред, я обнаружил, что не могу удалить sqlite без немедленной переустановки самой последней версии sqlite. Пробовать старую версию django тоже не получилось. Единственное решение, которое сработало для меня, - это использование базы данных PostgreSQL. Это, конечно, не идеально, но я планирую использовать базу данных PostgreSQL в будущем, так что это не было пустой тратой времени. Если вы оказались в том же месте, что и я, то это видео может быть полезно, если вы хотите узнать, как подключить базу данных PostgreSQL к вашему проекту django.
Вам нужно будет установить базу данных postgreSQL, прежде чем вносить изменения в settings.py, установка требует более или менее нажатия кнопки «Далее» для всех параметров. Однако запомните имя пользователя и пароль, которые вы используете во время установки.
источник
Для вышеуказанной проблемы и решения:
1) Зайдите в терминал и введите
pip install django==2.1.7
или последнюю версию django2) После установки введите в терминале
python manage.py makemigrations
, а затемpython manage.py migrate
3) В терминале запустите сервер с кодом
python manage.py runserver
4) Войдите на сервер администратора с паролем и добавьте продукт. Он успешно добавит продукт.
источник
Для тех , кто не хочет , чтобы понизить любое программное обеспечение, вы можете направиться в свой
settings.py
файл и вDATABASES
Словаре, вы можете заменить.sqlit3
с.postgresql
, и прямо под ним изменитьdb.sqlit3
кdb.sql
. Это переключает вашу базу данных по умолчанию на использование postgreSQL.Для этого вам понадобится
pip install psycopg2
.Удалите свой
db.sqlite3
файл (если он у вас есть / не заботитесь о том, чтобы потерять то, что в нем) и все остальное, кроме__init__.py
файла, в папке миграции вашего приложения. Как только вы все это сделаете, можете запускатьpython manage.py makemigrations
и питон,manage.py migrate
и тогда он должен работать :)Надеюсь, я смог кому-то помочь!
источник
Откройте => / YourAppFolder / migrations / Вы увидите, что файлы миграции, как « 0001_initial.py », удаляют все эти файлы. И запустить follwing команды 1-
python manage.py makemigrations
2-python manage.py migrate
Хоуп, он должен решить вашу проблемуисточник
Даже после обновления до последней версии Django 2.2.12 и запуска любого
migrate
или официального сценария восстановления базы данных я получил ту же ошибку__old_
:django.db.utils.IntegrityError: The row in table 'djangocms_blog_post_translation' with primary key '2' has an invalid foreign key: djangocms_blog_post_translation.master_id contains a value '2' that does not have a corresponding value in djangocms_blog_post__old.id.
Вот мой хак:
sqlite3 my_db.db .dump > my_db.sql
__old" ("id")
на" ("id") DEFERRABLE INITIALLY DEFERRED
sqlite3 my_db.db < my_db.sql
источник
Шаги:
Удалите текущий Django из вашего ENV. Просто удалите папку «anaconda3 / envs / yourenv / lib / python3.7 / site-packages / Django все версии .. * Примечание. Только для пользователей Anaconda, другие пользователи должны выяснить, как удалить пакет из вашего ENV.
Перейдите на Github.com/django/django.
Загрузите репо в виде zip-файла.
Распаковать zip.
Переключитесь на свой ENV.
Войдите в извлеченную папку.
Запустите "python setup.py install" и установите Django.
Удалите предыдущий файл db.sqlite3. Теперь снова примените миграции, чтобы создать новый файл db.sqlite3.
* Примечание: я не знаю, как исправить предыдущий файл базы данных и предотвратить потерю данных. Так что скажите, пожалуйста, если знаете.
Поздравляю! Теперь все работает нормально.
Обновление до последней версии django в январе из официального выпуска Django.
источник
У меня была такая же проблема, за исключением того, что у меня было 2 базы данных sqlite и настраиваемый маршрутизатор базы данных. Мне удалось заставить его работать, понизив Django до 1.11.20 и не создавая необходимости заново создавать базы данных.
источник
Для тех, кто не может решить эту ошибку с помощью приведенных выше ответов, если вы создали свое приложение с именем «main», эта ошибка может возникнуть из-за проблемы с тем же именем приложения. Так что попробуйте изменить имя вашего приложения «main» на другое.
источник
вам необходимо обновить Django, эта проблема исправлена в этом PR https://github.com/django/django/pull/10733
источник
Я решил проблему, поменяв некоторые свои модели. У меня был один именованный проект и один именованный проект. Таблицы базы данных запутались и бросили мне эту ошибку.
источник
Я решил эту проблему, используя ниже:
1) Удалите db.sqlit3
2) каталог приложения удалить все в pycache
3) manage.py makemigrations, manage.py migrate, manage.py создает суперпользователя, а затем manage.py runserver.
источник
У меня была такая же проблема, и я исправил ее, выполнив следующие действия:
1) Скачайте последнюю
django
версию2) скачайте последнюю
SQL Lite
версию3) удалить
db.sqlite3
файл из вашего проекта4) Внесите небольшие изменения в
models.py
(например, измените размер поля)5) сгенерируйте новый
db.sqllite3
файл, запустивmakemigrations
&migrate commands
6) импортируйте вновь созданный
db.sqllite3
файл вSQL Lite
источник
Я установил / понизил django до версии 2.2, это удалило django 3.x
pip install django==2.2
а затем я удалил файл db.sqlite, а затем
Я старался
источник
обновить версию django: pip install django --upgrade then
источник
Я сделал всего 4 вещи в командной строке, и она исправила мою.
py manage.py makemigrations
py manage.py migrate
py manage.py runserver
(запустить сервер)источник
django-2.2.7
Это сработало для меня -
1) Удалите db.sqlite3 .
2) В каждом приложении в папке миграции удалите все, кроме __init__.py .
3) В каждом приложении удалите папку __pycache__ .
Я не уверен, нужно ли вам делать это для всех приложений или только для соответствующего приложения, но у меня это сработало.
источник
migrations
Для решения подобных проблем стоит попрактиковаться в удалении файлов. @rajvijay