【问题标题】:Forcing MySql ENUM type to use 2 bytes from the start强制 MySql ENUM 类型从一开始就使用 2 个字节
【发布时间】:2011-03-12 01:39:43
【问题描述】:

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

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

在两张桌子上。它工作正常。

我有一个不起眼的例子,我最终从

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

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

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

使用 MySql - 5.1 InnoDB 表

【问题讨论】:

    标签: mysql enums mysql-error-1025


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您查找此内容。我也检查了页面,没有。似乎不是强制其大小的直接方法。它是一种非常强大的数据类型,但未被 MySql 充分利用。
    • 找不到解决办法。不要相信有一个正常的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2023-04-07
    相关资源
    最近更新 更多