我使用 Enum 数据类型作为在另一个表中作为外键引用的主键。如果我必须向这个枚举值添加一个额外的元素,我使用
ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL);
在两张桌子上。它工作正常。
我有一个不起眼的例子,我最终从 <255 值增加到更多。在这种情况下,ENUM 需要从 1 字节存储切换到 2 字节存储。那就是它失败的时候。给我
错误 1025 (HY000):将“./TXCAD/#sql-5912_86”重命名为“./TXCAD/EN_TABLE”时出错(错误号:150)
我做了一些研究,发现主表中从 1 字节到 2 字节的转换导致外键数据类型不一致。(如果我从 256+ 值开始,这根本不会发生。我验证了)
有没有办法强制 MySql 从一开始就使用 2 个字节,即使 ENUM() 在创建表期间的值少于 255 个?
使用 MySql - 5.1 InnoDB 表