phpmyadmin django.db.utils.OperationalError:(1071,'指定的密钥太长;最大密钥长度为767字节“),并带有unique_togther字段

41ik7eoe  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(157)

我和this post的用户遇到了同样的问题,但是,所有建议的解决方案对我都不起作用。我使用的是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字段可以使用呢?

qeeaahzv

qeeaahzv1#

我只是决定去掉这个字段,而在上传电子表格数据时使用exists()检查数据库,以确保没有重复的条目。

相关问题