Django main.app_table__old Ошибка при удалении элемента

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

Сначала я использую Django==2.0 (не могу перейти на версию из-за проблем).

У меня есть таблица модели table и мое приложение app при разработке случилось так, что я не могу удалить ни один элемент в этой таблице (остальные работают нормально). и я получил эту проблему.

OperationalError at /fieldsdetails/25/delete/
no such table: main.app_table__old

Я попытался удалить всю историю миграций, поэтому db.sqlite3 и запустить:

python manage.py makemigrations
python manage.py migrate

Затем я попытался удалить таблицу как

python manage.py dbshell
SELECT * FROM sqlite_master WHERE type='table';

затем я нашел таблицу с именем app_table__old и удалил ее, используя следующее:

DROP TABLE app_table__old
.exit

но ничего не помогает?

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

Я только что обнаружил хитрый способ решить эту проблему без потери или изменения или обновления Django.

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

Для решения проблемы выполните следующие действия: 1- перейдите к таблицам вашей модели и найдите другие таблицы, которые имеют ForeignKey или любое отношение к table, например:

 class table_Perimeter(models.Model):
     Perimeter    = models.ForeignKey( table, on_delete=models.CASCADE)

когда вы определите все таблицы, которые имеют связь с table. вам нужно устранить проблему в самой базе данных db.sqlite3. установите браузер SQLiteStudio с этого сайта https://sqlitestudio.pl/

затем перейдите к таблице Table_Perimeter и дважды щелкните на ней. вы увидите что-то вроде этого. enter image description here

Двойной щелчок для повторной настройки ForeignKey, и вы увидите красный значок: Введите, чтобы сконфигурировать его снова enter image description here

в этом окне выберите таблицу foreig table и Foreig id и нажмите применить enter image description here

нажмите для фиксации изменений

enter image description here

Так что все будет работать идеально, просто запустите свой сервер :)

Вернуться на верх