ENUM 值的最大长度是多少?

发布于 2024-10-05 05:23:32 字数 124 浏览 1 评论 0原文

搜索了文档,但没有结果。
枚举值(即字符串文字)的最大长度是多少?

Searched the docs, but to no avail.
What is the maximum length for an enumeration value, i.e. the string literal?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一紙繁鸢 2024-10-12 05:23:32

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

MySQL 文档指出

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

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

对于一个简单的测试,在已经有几个字段的表中,我的枚举长度达到 63136 个字符,并且 .frm 大小为 71775 字节(略大于 70KB),因此限制是近似的。此时,MySQL 抱怨#1117 - Too much columns,这至少可以说是具有误导性的。

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

The limit isn't on the length of the literal string, but rather on the table definition.

The MySQL documentation states that

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.

which is then followed by an ad-hoc equation expressing the approximate size of a table definition.

For a simple test, in a table with a couple fields already, I got my enum up to 63136 characters long, and the .frm was 71775 bytes big (slightly larger than 70KB), so the limit is approximate. At that point, MySQL complained #1117 - Too many columns, which is misleading to say the least.

Interestingly/oddly/worthwhile to note, the character set of the enum will change the maximum length. -- even if you're using normal characters which should only require 1 byte each.

奢欲 2024-10-12 05:23:32

ENUM 列最多可以有 65,535 个不同元素。 (实际限制小于 3000。)表的 ENUM 和 SET 列(被视为一个组)之间最多可以有 255 个唯一元素列表定义。

An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.) A table can have no more than 255 unique element list definitions among its ENUM and SET columns considered as a group.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文