Ошибка при неявной записи NULL в таблицу MySQL

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
alexforce2
Сообщения: 14
Зарегистрирован: 2014.07.18, 05:55

Ошибка при неявной записи NULL в таблицу MySQL

Сообщение alexforce2 »

Всем привет! У меня на домашнем сервере появляется странная ошибка, текст ошибки
CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id_manufacturer' at row 1
Конфигурация: Вин7(32)/ Apache 2.2.22/ PHP 5.4.11/ MySQL 5.6/ Yii 1.1.15
Более подробно: в админке есть страница редактирования товара(таблица `product`), где есть выпадающий список, содержащий список производителей(`manufacturer`), если не выбрать производителя(выбрать пустое значение), то при отправке формы выбрасывается вышеприведённая ошибка. В таблице `product` есть колонка 'id_manufacturer' в которую записывается ид производителя. Свойства колонки 'id_manufacturer' - DEFAULT NULL ALLOW NULL, правило валидации для свойства 'id_manufacturer' в модели - array('id_manufacturer', 'numerical'). Если удалить правило валидации -скрипт работает корректно.
В SQL запросе передаётся - id_manufacturer=''. Что интересно, данная ошибка не появляется на боевом сервере и на сервере у человека, который ревьюит код, код у нас одинаковый(GIT), а у меня появляется подобная ошибка и в других разделах в аналогичной ситуации. Подскажите, пожалуйста, в чём проблема.
Аватара пользователя
tsurka
Сообщения: 222
Зарегистрирован: 2012.05.07, 17:10
Откуда: Приднестровье
Контактная информация:

Re: Ошибка при неявной записи NULL в таблицу MySQL

Сообщение tsurka »

А версии MySQL отличаются у Вас и у остальных?
alexforce2
Сообщения: 14
Зарегистрирован: 2014.07.18, 05:55

Re: Ошибка при неявной записи NULL в таблицу MySQL

Сообщение alexforce2 »

Этого не знаю
Аватара пользователя
iAchilles
Сообщения: 41
Зарегистрирован: 2014.09.11, 19:44

Re: Ошибка при неявной записи NULL в таблицу MySQL

Сообщение iAchilles »

alexforce2, значит у вас на домашнем MySQL сервере установлен sql-model либо STRICT_TRANS_TABLES, либо STRICT_ALL_TABLES. Согласно запросу в integer поле идет попытка вставить строковое значение, что недопустимо. Вам нужно использовать дополнительное правило валидации валидатора CDefaultValueValidator, setOnEmpty = null.
Во время валидации значение свойства id_manufactured, если оно не имеет установленного значения, будет установлено в null, и запрос должен успешно отработать. Вообще - strict mode это хорошо. Лучше писать SQL, как можно приблеженное к стандарту. :)
alexforce2
Сообщения: 14
Зарегистрирован: 2014.07.18, 05:55

Re: Ошибка при неявной записи NULL в таблицу MySQL

Сообщение alexforce2 »

Не так давно купил новый компьютер, перенёс на него рабочую среду со старого - теперь данная ошибка не воспроизводится.
alexforce2
Сообщения: 14
Зарегистрирован: 2014.07.18, 05:55

Re: Ошибка при неявной записи NULL в таблицу MySQL

Сообщение alexforce2 »

Спасибо iAchilles! Ваш совет про CDefaultValueValidator, setOnEmpty = true помог исправить ошибку, которая опять стала появляться.
Ответить