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()
всякий раз, когда загружаю таблицу данных, чтобы убедиться, что не сделаны дублирующие записи.