Django - такой таблицы нет: main.auth_user__old

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

Ниже приводится ошибка:

OperationalError at /admin/polls/question/1/change/ no such table: main.auth_user__old Request Method: POST Request URL: http://127.0.0.1:8000/admin/polls/question/1/change/ Django Version: 2.1.4 Exception Type: OperationalError Exception Value: no such table: main.auth_user__old Exception Location: /Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 296 Python Executable: /Users/gfioravante/Projects/test_app/ta_env/bin/python3 Python Version: 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/Projects/test_app/ta_env/lib/python3.7/site-packages'] Server time: Wed, 5 Dec 2018 16:45:00 +0000

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

Environment:

Request Method: POST Request URL: http://127.0.0.1:8000/admin/polls/question/1/change/

Django Version: 2.1.4 Python Version: 3.7.1 Installed Applications: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] Installed Middleware: ['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.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback:

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params)

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

The above exception (no such table: main.auth_user__old) was the direct cause of the following exception:

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 126. response = self.process_exception_by_middleware(e, request)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response 124. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in wrapper 604. return self.admin_site.admin_view(view)(*args, **kwargs)

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

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py" in inner 223. return view(request, *args, **kwargs)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in change_view 1640. return self.changeform_view(request, object_id, form_url, extra_context)

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

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in changeform_view 1525. return self._changeform_view(request, object_id, form_url, extra_context)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in _changeform_view 1571. self.log_change(request, new_object, change_message)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py" in log_change 826. change_message=message,

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" in 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" in create 413. obj.save(force_insert=True, using=self.db)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in save 718. force_update=force_update, update_fields=update_fields)

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

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in _save_table 831. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py" in _do_insert 869. using=using, raw=raw)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py" in 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" in _insert 1136. return 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" in execute_sql 1289. cursor.execute(sql, params)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in execute 100. return super().execute(sql, params)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in execute 68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute_with_wrappers 77. return executor(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. return self.cursor.execute(sql, params)

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py" in exit 89. raise dj_exc_value.with_traceback(traceback) from exc_value

File "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py" in _execute 85. return self.cursor.execute(sql, params)

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

Exception Type: OperationalError at /admin/polls/question/1/change/ Exception Value: no such table: main.auth_user__old

Если у вас нет данных, просто удалите их и перенесите снова. Если это невозможно, выполните python manage.py showmigrations, чтобы узнать, какие миграции не выполнены.

seuling 05.12.2018 18:13

Эта проблема устранена только в Django версии 2.1.5.

Hitman 20.11.2021 11:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
98
2
94 363
30
Перейти к ответу Данный вопрос помечен как решенный

Ответы 30

Ответ принят как подходящий

Я сам столкнулся с этим, похоже, это связано с https://code.djangoproject.com/ticket/29182. На данный момент вы можете просто понизить свою версию sqlite до версии до 2.6 (например, 2.5.1).

да, вот и все. Похоже, что выпуски Django 2.x.x демонстрируют эту проблему, я вернулся к версии 1.11.17, и все работает нормально, спасибо!

user10750522 05.12.2018 21:32

Исправление проблемы уже внесено, и оно будет включено в следующие точечные выпуски 2.1.5 (ожидается 1 января 2019 г.) и 2.0.10 (дата выпуска подлежит уточнению).

Alasdair 12.12.2018 12:32

Не так-то просто перейти на более раннюю версию системы macOS sqlite3 или мне что-то здесь не хватает? Мой обходной путь - установить github / master django (где это исправлено).

Alper 14.12.2018 21:08

@Alper Я удалил текущий django, а затем установил django с GitHub. ошибка все еще сохраняется, и я не смог понизить версию sqlite3 на моей macOS (например, используя brew install [email protected]) Есть идеи?

Richard Miller 16.12.2018 03:47

Я установил мастер Django, а затем уничтожил свою базу данных и переделал все заново (потому что я был в начале проекта). Казалось, это сработало.

Alper 17.12.2018 16:55

Я столкнулся с этой проблемой в ArchLinux, поскольку недавнее обновление системы подтолкнуло мою рабочую станцию ​​к sqlite 3.26. В документации диспетчера пакетов Arch объясняется, как перейти на предыдущую версию пакета. В моем случае pacman -U path/to/cache/sqlite-3.25.3-1-x86_64.pkg.tar.xz

scvnc 21.12.2018 00:04

После обновления не забудьте удалить базу данных и перестроить ее с помощью команды миграции.

Mitsjol 23.12.2018 17:45

Извините, что разочаровал вас @Alasdair, но я только что обновился до Django 2.1.5, попробовал еще раз и получаю точно такую ​​же ошибку dpaste.de/Nz4n

Andrea Grandi 04.01.2019 15:27

Сегодня были выпущены Django 2.1.5 и Django 2.0.10, которые должны решить эту проблему. Обратите внимание, что примечания к выпуску говорит: Возможно, вам придется удалить и перестроить базу данных SQLite, если вы применили миграцию при использовании более старой версии Django с SQLite 3.26 или новее.

Alasdair 04.01.2019 16:28

@AndreaGrandi Я бы попытался удалить и перестроить вашу базу данных SQLite, как указано в примечаниях к выпуску. Сначала создайте резервную копию файла sqlite3, если он содержит какие-либо важные данные.

Alasdair 04.01.2019 16:30

@Alasdair, спасибо! Удаление и воссоздание БД устранило проблему.

Andrea Grandi 04.01.2019 17:23

как перейти на предыдущую версию? it pip freeze не показывает версию sqlite

Alvaro 10.01.2019 20:38

@Alvaro Ошибка исправлена ​​в Django 2.1.5.

Selcuk 16.01.2019 00:24

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

в конце концов проблема не была связана с этим, но спасибо, что нашли время!

user10750522 05.12.2018 21:34

Шаги:

  1. Удалите текущий Django из вашего ENV. Просто удалите папку «anaconda3 / envs / yourenv / lib / python3.7 / site-packages / Django все версии ..

    Примечание: Только для пользователей Anaconda, другие пользователи должны выяснить, как удалить пакет из вашего ENV.

  2. Перейдите к https://github.com/django/django.

  3. Загрузите репо в виде zip-файла.

  4. Распаковать zip.

  5. Переключитесь на свой ENV.

  6. Войдите в извлеченную папку.

  7. Запускаем "python setup.py install" и устанавливаем Django.

  8. Удалите предыдущий файл db.sqlite3. Теперь снова примените миграции, чтобы создать новый файл db.sqlite3.

    Примечание: Я не знаю, как исправить предыдущий файл базы данных и предотвратить потерю данных. Так что скажите, пожалуйста, если знаете.

  9. Запускаем сервер.

Поздравляю! Теперь все работает нормально.

Обновление до последней версии django в январе из официального выпуска Django.

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

Для тех, кто не хочет понижать версию какого-либо программного обеспечения, вы можете зайти в свой файл settings.py и в dict DATABASES вы можете заменить .sqlit3 на .postgresql, а прямо под ним изменить db.sqlit3 на db.sql. Это переключает вашу базу данных по умолчанию на использование postgreSQL.

Для этого вам понадобится pip install psycopg2.

Удалите файл db.sqlite3 (если он у вас есть / вы не хотите потерять то, что в нем находится) и все остальное, кроме файла __init__.py, в папке миграции вашего приложения. Как только вы все это сделаете, вы можете запустить python manage.py makemigrations и python manage.py migrate, и тогда все должно заработать :)

Надеюсь, я смог кому-то помочь!

PostgreSQL также должен быть установлен, чтобы это работало для всех, кто не может понять, почему вы получаете ошибки подключения после всего этого. :)

Gilbert 05.01.2019 03:53

psycopg2 - это не PostgreSQL? Потому что это объясняет, почему он не запускал для меня сервер, ха-ха

Ziiik 06.01.2019 05:23

AFAIK psycopg2 - это адаптер, позволяющий Python общаться с PostgreSQL, но PostgreSQL необходимо устанавливать отдельно. Примечание: я новичок в Django, поэтому относитесь ко всему, что я говорю, с недоверием.

Gilbert 06.01.2019 19:13

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

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

Я сделал всего 4 вещи в командной строке, и она исправила мою.

  1. ctrl + c (стоп-сервер)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver (стартовый сервер)

Проблема уже исправлена ​​в выпуске пункта 2.1.5 (номер билета # 29182 в сеансе «Исправления ошибок в примечаниях к выпуску»). docs.djangoproject.com/en/2.1/releases/2.1.5/#bugfixes

user10750522 19.02.2019 18:46

Я решил проблему, обновив Django с 2.1.4 до 2.1.5, запустив

pip install --upgrade django==2.1.5

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


Обновлено:

Вместо удаления всего проекта достаточно было удалить только базу данных. А потом бежать

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

в этом случае команды migrate и makemigrations достаточно для нового django.

Pravin RGMishra 23.03.2019 20:23

заходим в эту папку 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 1.11, за исключением того, что мне нужно было только добавить строку «c.execute ('PRAGMA legacy_alter_table = ON')» после «c.execute ('PRAGMA foreign_keys = 0')», и это исправило его.

n00b 09.05.2019 17:21

Я нахожусь в середине учебника, для которого требуется django 2.0.7. Это решение работает :)

Bisonbleu 05.07.2019 19:59

@Bisonbleu Мне кажется, я нахожусь в середине того же урока. Но решение у меня не сработало. Не могли бы вы подробнее рассказать, что вы сделали?

free_lions_n_tigers_from_cages 04.01.2020 19:20

@unathletic_coder, как предложено в ответе Намала Джаясундара, я перешел на /project_name/lib/python3.7/site-packages/django/db/backends‌ /sqlite3/schema.py в строке 21, которая начинается с: def __enter __ (self): и заменил существующий код предложенными 3 строками кода. Я делаю youtube.com/watch?v=F5mRW0jo-U4

Bisonbleu 06.01.2020 03:33

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

Избавиться от этой проблемы легко, выполнив следующие действия:

  1. оставьте django версии 2.1.5 (проблема решена в этой версии) pip install django==2.1.5
  2. Удалить базу данных SQLite
  3. Перенесите снова python manage.py makemigrations, а затем python manage.py migrate
  4. Запускаем сервер python manage.py runserver

ВЫПОЛНЕНО!

Это будет работать отлично, но предположим, что вы не хотите удалять файл sqlite db?

Philip Mutua 29.10.2019 07:03

это работает даже без удаления sqlite db (но все еще переносится). я работал над старыми проектами с 2.0.4

izzulmakin 21.12.2019 14:57

Спасибо, это хорошо работает. Я использую версию 2.0.7, и у меня проблема с сохранением данных в админке.

xreyc_developer22 17.04.2020 12:02

Для себя я сначала использовал: pip install --upgrade django==2.1.5 Затем я использовал python manage.py makemigrations, а затем python manage.py migrate Затем я использовал python manage.py runserver Работал как шарм, мне не нужно было удалять db!

Sidrah Madiha Siddiqui 18.02.2021 21:23

Для тех, кто не может решить эту ошибку с помощью приведенных выше ответов, если вы создали свое приложение с именем «main», эта ошибка может возникнуть из-за проблемы с тем же именем приложения. Так что попробуйте изменить имя вашего приложения «main» на другое.

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

Я решил проблему, поменяв некоторые свои модели. У меня был один именованный проект и один именованный проект. Таблицы базы данных запутались и выкинули мне эту ошибку.

Просто сделал это, и проблема была решена:

pip install Django --upgrade

Потом:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

Вы можете объяснить, что именно здесь произошло? У меня это сработало, но я не понял, что случилось

Netranjit Borgohain 08.02.2021 09:12

Просто обновили Django до последней версии, а затем снова перенеслись. @NetranjitBorgohain

Asir Shahriar Roudra 09.02.2021 04:26

Хорошо, я думал, что тоже происходит что-то еще. Я очень новичок в этом

Netranjit Borgohain 10.02.2021 08:45

Это исправило это для меня. Я использовал Django==2.0.7, как предлагается в руководство, переключился на 3.2.9, выполнив эти команды, и это исправлено.

Amir Shabani 13.11.2021 09:28

Для вышеуказанной проблемы и решения:

1) Зайдите в терминал и введите pip install django==2.1.7 или последнюю версию django

2) После установки, в терминале введите python manage.py makemigrations, а затем python manage.py migrate

3) В терминале запустите сервер с кодом python manage.py runserver

4) Войдите на сервер администратора с паролем и добавьте продукт. Он успешно добавит продукт.

Добро пожаловать в Stack Overflow! Пожалуйста, сообщайте о любых принадлежности и не используйте сайт как способ продвижения вашего сайта посредством публикации. См. Как мне написать хороший ответ?.

user3956566 17.09.2019 09:19

Я решил эту проблему, используя ниже:

1) Удалите db.sqlit3

2) каталог приложения удалить все в pycache

3) manage.py makemigrations, manage.py migrate, manage.py создает суперпользователя, а затем manage.py runserver.

django-2.2.7
Это сработало для меня -

1) Удалить db.sqlite3.
2) В каждом приложении в папке миграции удалите все, кроме __init__.py.
3) В каждом приложении удалите папку __pycache__.

Я не уверен, приходилось ли вам делать это для всех приложений или только для соответствующего приложения, но у меня это сработало.

Для решения подобных проблем стоит попрактиковаться в удалении файлов migrations. @rajvijay

Whale 52Hz 02.11.2020 13:30

У меня была такая же проблема, и я исправил ее, выполнив следующие действия:

1) Скачайте последнюю версию django

2) скачайте последнюю версию SQL Lite

3) удалите файл db.sqlite3 из вашего проекта

4) Внесите небольшие изменения в models.py (например, измените размер поля)

5) сгенерируйте новый файл db.sqllite3, запустив makemigrations и migrate commands

6) импортируйте только что созданный файл db.sqllite3 в SQL Lite

Вот что я сделал для решения этой проблемы:

  1. Заходим в виртуальную среду и устанавливаем [email protected]

    pip install django==2.1.7
    
  2. Удалите файл db.sqlite3 в корневой папке.

  3. Создайте новый db.sqlite3 в корневой папке.
  4. Повторно запустить миграции:

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

Теперь все должно работать нормально.

«удалить файл db.sqlite3 в корневой папке» - это ключ ~ run python3 manage.py makemigrations создаст новый файл sqlite3.

Jerome 29.12.2019 09:29

По какой-то причине удаление sqlite не просто сработало, я также попытался удалить миграции pycache + (я только изучаю Django), тогда это сработало для меня.

Anshuman Kumar 29.07.2020 11:11

Даже после обновления до последней версии 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.

Вот мой хак:

  1. выгрузить содержимое базы данных в sql: sqlite3 my_db.db .dump > my_db.sql
  2. запустите регулярное выражение поверх вывода sql, заменив __old" ("id") на " ("id") DEFERRABLE INITIALLY DEFERRED
  3. удалить старый файл базы данных
  4. загрузить измененный sql в новую базу данных: sqlite3 my_db.db < my_db.sql
  5. ??? & выгода

Тысячу раз спасибо - я никак не удалял свою базу данных и начинал с нуля. Мне также пришлось добавить PRAGMA legacy_alter_table = FALSE; в начало my_db.sql

tschumann 20.02.2021 07:29

Это хороший ответ, если вы не хотите «просто удалить свою базу данных»!

Mark Bailey 11.03.2021 13:39

Я установил / понизил версию django до версии 2.2, это удалило django 3.x

pip install django==2.2

а затем я удалил файл db.sqlite, а затем

Я пытался

python manage.py makemigrations,
python manage.py migrate 
python manage.py creatingsuperuser. 
  1. Сначала остановите сервер и удалите db.sqlite3.

  2. Затем вам нужно запустить:

    python manage.py makemigrations
    python manage.py migrate

  3. После выполнения этой команды вам необходимо создать суперпользователя. Создавать Суперпользователь, запуск:
    python manage.py createsuperuser
    Введите здесь данные суперпользователя.

  4. Снова запустите свой сервер.

Вот и все.

Сначала обновите версию django:

pip install django --upgrade

тогда

./manage.py makemigration
./manage.py migrate
./manage.py runserver

для меня это было из моей версии django (это было 2.1) установить более высокую версию (я почему-то использовал 2.1.5) ** удалите db.sqlite3 и все, что находится в папке миграции, кроме в этом.py Команда Run:

pip install django==2.1.5 --upgrade
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

сохранить версию django 2.1.5

This issue is adressed only in this version of Django
  • pip install django == 2.1.5
  • Удалить базу данных SQLite
  • Запустить миграцию
  • Запустите сервер python manage.py runserver

Это решает указанную выше проблему.

  1. Обновите Django pip install Django --upgrade

  2. Удалите файл db.sqlite3 из корневой папки вашего проекта.

  3. Создайте новый db.sqlite3 в корневой папке, повторно запустив миграции. python3 manage.py makemigrations

  4. Мигрировать python3 manage.py migrate

Он может работать только с этим, или вам может потребоваться создать нового суперпользователя, если он был удален.

  1. Проверьте своего суперпользователя, используя
python manage.py shell
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)   

Если появляется <QuerySet []>, значит пользователя нет. В противном случае проверьте, существует ли ваш пользователь.

  1. Если вашего пользователя не существует, создайте его, используя python manage.py createsuperuser

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

тогда

1. Delete db.sqlite3
2. python manage.py makemigrations
3. python manage.py migrate
4. python manage.py createsuperuser 

HTH :)

  1. Удалить db.sqlite3
  2. миграция и мигрировать
  3. Создать нового суперпользователя

Это работает для меня

Примечание: Не выполняйте этот трюк, если у вас есть личные данные в Sqlite3 DB, так как вы собираетесь удалить Sqlite3 DB.

Я знаю, что на этот вопрос дается много ответов, но только этот трюк помогает мне решить эту проблему, поскольку я новичок в python и изучаю Джанго.

  1. Остановил работу веб-сервера django, Ctrl-C
  2. Удалите db.sqlite3
  3. Удалена старая версия Django
  4. Установите последнюю версию Django с помощью «pip install django»
  5. Удалите все миграции из всех приложений вашего проекта

Теперь запустите эти команды в терминале

  1. python manage.py makemigrations
  2. python manage.py migrate
  3. python manage.py createsuperuser (укажите учетные данные суперпользователя)
  4. python manage.py runserver

Теперь, наконец, войдите в панель администратора с обновленными учетными данными суперпользователя и попробуйте добавить запись.

Те же предложения в этом ссылка на сайт кем-то

Другие вопросы по теме