Таблица базы данных MySQL, связанная с приложением Django App, "повреждена"

У меня проблема, которая никогда не случалась со мной раньше. Это приложение, сделанное на Django, которое никогда не выдавало мне ошибок. По какой-то причине таблица в базе данных (MySQL) повреждена, но приложение продолжает работать.

Однако, когда я делаю вызов следующим образом: queryset = Tuition.objects.filter(agent = user) Тогда база данных выдает мне такую ошибку:

django.db.utils.OperationalError: (1712, 'Index base_tuition_agent_id_b1b4dfb6_fk_base_staff_user_ptr_id is corrupted')

Но, если я изменю вызов на: queryset = Tuition.objects.filter(Q(date__lte="1900-01-01")|Q(agent__id=90)) Тогда, ошибки нет... Сюрприз! (Очевидно, что в базе данных нет даты до 1900 года, поэтому обе функции аналогичны).

Но, если я изменю вызов на: queryset = Tuition.objects.filter(Q(date__gte="1900-01-01")&Q(agent__id=90)) Тогда, база данных через ошибку снова...

Со:

  • Если я фильтрую по "агенту", это не работает.
  • Если я фильтрую с условием "OR", объединяя поле "агент" с другим полем, это работает.
  • Если я фильтрую с условием "AND", объединяя поле "agent" с другим полем, это не работает.

Подробности таблицы можно посмотреть здесь: MYSQL TABLE DETAILS

Я не очень разбираюсь в MySQL и хотел бы узнать, как возможен результат вышеуказанных вызовов. Потому что по моему незнанию, нормальным было бы то, что ни один из них не работает, или хорошо, что все они работают.

Чтобы исправить это, я безуспешно пытался дублировать таблицу. Я пробовал экспортировать и импортировать ее без успеха. И я пытался изменить параметр innodb_force_recovery=3 в mysql, но я не очень понимаю, как это работает.

Может ли кто-нибудь помочь мне? Спасибо!!!

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