Error number: MY-012886; Symbol: ER_IB_MSG_1061; SQLSTATE: HY000
Message: Cannot create %s
错误说明
错误代码MY-012886(ER_IB_MSG_1061)表示“Index column size too large. The maximum column size is 767 bytes.”,这是一个InnoDB索引错误,由于索引字段的大小超出了MySQL支持的最大值767字节。
常见案例
常见的案例是,用户试图将一个索引列定义为VARCHAR,并且其长度大于767字节。另一个案例是在MyISAM表上创建一个复合索引,其中包含多个字段,比如CHAR,VARCHAR,TEXT等等,这种情况下,索引列的总字节数超过了767,就会报错MY-012886(ER_IB_MSG_1061)。
解决方法
推荐的解决方案是删除原有的索引,并且更改索引里的所有VARCHAR列的大小,使它们都在767字节以下。除此之外,用户还可以选择更改所有索引列的数据类型,但是这样会影响数据的精度。另外,也可以改用MyISAM表,最大索引长度是1000字节,但是MyISAM表是没有事务性的,所以应谨慎使用。另外,MySQL 8.0以后,可以使用InnoDB表来支持大索引,其最大索引长度为3072字节,但是要注意,这将大大降低入索引速度。