我是否应该能够使用文本值更新MySQL枚举类型?

时间:2011-04-14 17:16:31

标签: php mysql doctrine

我正在尝试通过Doctrine(分别为5.3和1.2)从PHP更新MYSQL枚举字段中的值。

我尝试这样做时出错:

    $q = Doctrine_Query::create()
            ->update('StMessages')
            ->set('status','new')
            ->where('message_id = ?',$msg_id);

我收到sql状态错误,告诉我“new”列不存在。如果我输入3而不是new(可能是'new'值的内部索引),则查询有效。实际上它也发生在SQL客户端中,所以这可能是这个版本的MySQL的怪癖?其5.1.45。

任何人都知道这是MySQL应该如何处理枚举,还是这更像是一个学说问题?我将'use_native_enum'设置为true。

2 个答案:

答案 0 :(得分:0)

给出一个表

create table test (
     enumfield enum('a','b','c')
);

你应该可以做到

update test set enumfield='a';

这是num字段的全部内容 - 不必乱用索引等等。

你的枚举字段的确切定义是什么?

答案 1 :(得分:0)

我认为这实际上是在更新字段值时引用字符串的问题。我不确定Doctrine或我是否有过错。