如何将索引的varchar(255)从utf8更改为utf8mb4并仍然保持在767最大密钥长度之下?

Rya*_*yan 3 mysql indexing utf-8 utf8mb4

我有一个需要支持表情符号的mysql列,这意味着将utf8列转换为utf8mb4.但是我的varchar(255)将不适合,只要列被索引(不唯一).

如何保留索引,并获得utf8mb4校对?

我试图将长度减少到191但不幸的是我的一些行更长并且我得到了这个错误:( #1406 - Data too long for column 'column_name' at row 33565由于我没有自动增量列并且不知道如何罚款,这不是非常有用第33565行).

Dev*_*art 6

我认为它与行的最大数据长度有关,存在这样的限制,至少对于我知道的字符串数据类型.为避免这种情况,请尝试将表的数据分开,例如使用一对一关系将表拆分为两个表.

关于最大密钥长度:我已经尝试使用索引utf8mb4字段创建表,它已成功创建密钥长度为191,但是当我将其设置为192时,它引发了错误 - 指定密钥太长; 最大密钥长度为767字节.