1

我有这个models.py

category = models.CharField(max_length=1024, null=False)

我把它改成这样:

category = models.CharField(max_length=256, null=False)

并成功迁移。

然后我把它改成这样:

category = models.CharField(max_length=256, null=False, db_index=True)

迁移时我得到了这个:

_mysql_exceptions.Warning: Specified key was too long; max key length is 767 bytes

和迁移中断。

但是,当我打开 phpmyadmin 面板时,我看到索引已创建。

我应该关心吗?我应该做些什么来避免这个警告吗?这个警告重要吗?

编辑:字段排序规则是utf8_general_ci

4

1 回答 1

2

根据 MySQL 5.6 文档:InnoDB 表的限制

默认情况下,单列索引的索引键最长可达 767 字节。相同的长度限制适用于任何索引键前缀。

当您尝试指定比允许的更长的索引前缀长度时,该长度会静默减少到非唯一索引的最大长度

对于唯一索引,超过索引前缀限制会产生错误。为避免复制配置出现此类错误,请避免在 master 上设置 innodb_large_prefix 选项,如果它也不能在从属上设置,并且从属具有可能受此限制影响的唯一索引。

于 2013-11-01T09:52:58.397 回答