赞
踩
latin1
占用1 bytes
,utf8
占用3 bytes
,而utf8mb4
占用4 bytes
;mysql5.6
以及以前的版本的InnoDB
引擎的表限制索引最多占用767 bytes
;而MyISAM
的是最长1000 bytes
。mysql5.7
版本开始这个限制提升到3072 bytes
,UTF8
可以达到VARCHAR(1024)
;所以当你的唯一索引字段在mysql5.6
或更早的版本时(引擎为InnoDB
),utf8mb4
字符串最长能到VARCHAR(191)
(1914=764),utf8
可以到VARCHAR(255)
(255·3=765)。如果你从不指定长度直接使用utf8mb4
字段做唯一索引,就会报Specified key was too long; max key length is 767 bytes
错误,因为计算默认字符串默认长度时是255。
这个问题在Laravel
中就有可能发生,为了存储emoji
它默认使用utf8mb4
,如果你的mysql版本低于5.7,需要注意上面的情况.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。