mysql - ENUM 值的最大长度是多少?

标签 mysql enums types

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

最佳答案

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

MySQL documentation指出

Each table has an .frm file that contains the table definition. The server uses the following expression to check some of the table information stored in the file against upper limit of 64KB.

然后是一个表示表定义的近似大小的临时方程。

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

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

关于mysql - ENUM 值的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307232/

相关文章:

php - Laravel Eloquent : Passing the value of find() in a function

java - 将枚举 INSTANCE 设为私有(private)

clojure - 如何使用枚举/引用的实体 id 执行 Datomic 事务?

c - c中的3位无符号整数

python - Pyodbc 数字的默认类型

php - 如何在 CakePhp 索引中添加相关记录的计数

php - MYSQL:按周间隔分组,大于星期一

php - 在没有预先准备好的语句的情况下清理 MySQL 查询(PHP + 旧的 mysql 模块)

java - 将值从一个枚举导入另一个?

go - 在 Go 中使用反射来获取结构的名称