【发布时间】:2015-10-27 22:14:42
【问题描述】:
我有 enum 字段,其中包含同一字母的 lowercase 和 uppercase,
当我尝试更新一行并更改它不起作用的值时。
这是重现问题的方式:
CREATE TABLE `mytable` (
`id` bigint(20) NOT NULL,
`name` varchar(100) NOT NULL,
`strategy` enum('g','G','r','R') NOT NULL DEFAULT 'g'
) ENGINE=InnoDB;
INSERT INTO `mytable` VALUES(1,'test','g');
现在,当我尝试将 strategy 从 g 更改为 G 时,它不起作用:
UPDATE `mytable` SET `strategy`='G' WHERE id=1;
它返回:
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
我用MySQL 5.5,请帮帮我
编辑:
正如@farshad 在他的评论中提到的,
它使用第一个匹配项,如果我更改enum 的顺序并使用'G','g',...,它将始终使用G,您不能将其改回g
【问题讨论】:
-
这取决于枚举顺序。 Mysql返回第一个匹配的g字符,在我的测试中,当您将顺序更改为('G','g')时,所有带有'g'的行在所有情况下都返回'G'。我认为正确的问题是为什么mysql总是以区分大小写的枚举值返回第一个枚举字符
标签: mysql enums case-sensitive uppercase lowercase