gpt4 book ai didi

mysql - 强制 MySql ENUM 类型从头开始使用 2 个字节

转载 作者:行者123 更新时间:2023-11-29 00:57:33 24 4
gpt4 key购买 nike

我使用枚举数据类型作为在另一个表中作为外键引用的主键。如果我必须向这个枚举值添加一个额外的元素,我使用

ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL);

在两张 table 上。它工作正常。

我有一个模糊的例子,我最终从 <255 个值变成了更多。在这种情况下,ENUM 将需要从 1 字节存储切换到 2 字节存储。那就是它失败的时候。给我

错误 1025 (HY000):将“./TXCAD/#sql-5912_86”重命名为“./TXCAD/EN_TABLE”时出错(错误号:150)

我做了一些研究,发现主表中从 1 字节到 2 字节的这种转换导致外键数据类型不一致。 (如果我从 256+ 个值开始,这根本不会发生。我验证了这一点)

有没有办法强制 MySql 从头开始​​使用 2 个字节,即使在创建表期间 ENUM() 的值少于 255 个?

使用MySql-5.1InnoDB 表

最佳答案

如你所知,我对此进行了相当多的搜索。从文档中可以看出,在创建表时获得 2 字节枚举的唯一方法是您提到的方式......也就是说,在枚举列表中指定超过 255 个项目。我没有看到允许它的表创建语法的另一部分。您唯一的其他希望是有一个启用不同默认值的配置文件参数。

存在服务器系统变量列表,但我进行了快速搜索,没有看到对可能更改枚举字段大小默认行为的变量的引用。 http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html(注意,这个页面非常大,我的浏览器暂时挂了。)

只是觉得你想知道其他人看了这个问题并决定进一步调查,而不是只听蟋蟀...

关于mysql - 强制 MySql ENUM 类型从头开始使用 2 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5280229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com