Должен ли я иметь возможность обновить тип перечисления MySQL текстовым значением? - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь обновить значение в поле перечисления MYSQL из PHP через Doctrine (5.3 и 1.2 соответственно).

При попытке сделать это я получаю ошибку:

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

Я получаю сообщение об ошибке состояния SQL, сообщающее, что столбец «новый» не существует.Если я введу 3 вместо new (предположительно, внутренний индекс значения 'new'), тогда запрос будет работать.На самом деле это происходит и в клиенте SQL, так что, может быть, это и есть причуда этой версии MySQL?Его 5.1.45.

Кто-нибудь знает, так ли это, как MySQL должен обрабатывать перечисления, или это скорее проблема Doctrine?У меня для use_native_enum установлено значение true.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Я думаю, что это на самом деле проблема, связанная с цитированием строк при обновлении значений поля.Я не уверен, что Доктрина или я были виноваты.

0 голосов
/ 14 апреля 2011

Учитывая таблицу

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

, вы должны быть в состоянии сделать

update test set enumfield='a';

, что является целым пунктом поля num - не нужно связываться с индексами и еще много чего.

Какое точное определение вашего перечислимого поля?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...