ENUM值的最大长度是多少?

Eug*_*ash 6 mysql enums types

搜索了文档,但无济于事.
枚举值的最大长度是多少,即字符串文字?

Rie*_*sio 8

限制不在文字字符串的长度上,而是在表定义上.

MySQL文档指出,

每个表都有一个包含表定义的.frm文件.服务器使用以下表达式来检查存储在文件中的一些表信息,而不是64KB的上限.

然后是表示表定义的近似大小的ad-hoc等式.

对于一个简单的测试,在一个已有几个字段的表中,我的枚举长达63136个字符,而.frm大71775字节(略大于70KB),所以限制是近似值.那时,MySQL抱怨说#1117 - Too many columns,这至少可以说是误导.

有趣/奇怪/值得注意,枚举的字符集将改变最大长度. - 即使你使用普通字符,每个字符只需要1个字节.


小智 5

ENUM列最多可包含65,535个不同的元素.(实际限制小于3000.)一个表在其被视为一个组的ENUM和SET列中不能超过255个唯一元素列表定义.