Django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes') с полем unique_togther

У меня та же проблема, что и у пользователя из этого сообщения, однако все предложенные решения не сработали для меня. Я использую MySQL 8.0.24 с Django 3.1.

Подобно им, у меня была модель без поля unique_together, как показано ниже

class Show(models.Model):
    english_name = models.CharField(max_length=400)
    kanji_name = models.CharField(max_length=200, blank=True)
    romanji_name = models.CharField(max_length=400, blank=True)
    show_type = models.CharField(max_length=100, blank=True)
    # a bunch of other fields...


    class Meta:
        verbose_name_plural = 'Series'
        ordering = ('-created',)
unique_together = ['english_name', 'kanji_name', 'romanji_name', 'show_type']

    def __str__(self):
        return self.english_name

Только после того, как я изменил class Meta на это

class Meta:
        verbose_name_plural = 'Series'
        ordering = ('-created',)
        unique_together = ['english_name', 'kanji_name', 'romanji_name', 'show_type']

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

django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 3072 bytes')

Я выполнил шаги в сообщении, на которое я ссылался выше, чтобы убедиться, что используется utf8, я смог подтвердить, что набор данных использует этот набор символов, но это не решило мою проблему. Могу ли я сделать что-нибудь еще, чтобы убедиться, что поле unique_together можно использовать?

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

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