Всем привет! У меня на домашнем сервере появляется странная ошибка, текст ошибки
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), а у меня появляется подобная ошибка и в других разделах в аналогичной ситуации. Подскажите, пожалуйста, в чём проблема.
Ошибка при неявной записи NULL в таблицу MySQL
-
- Сообщения: 14
- Зарегистрирован: 2014.07.18, 05:55
- tsurka
- Сообщения: 222
- Зарегистрирован: 2012.05.07, 17:10
- Откуда: Приднестровье
- Контактная информация:
Re: Ошибка при неявной записи NULL в таблицу MySQL
А версии MySQL отличаются у Вас и у остальных?
-
- Сообщения: 14
- Зарегистрирован: 2014.07.18, 05:55
Re: Ошибка при неявной записи NULL в таблицу MySQL
Этого не знаю
Re: Ошибка при неявной записи NULL в таблицу MySQL
alexforce2, значит у вас на домашнем MySQL сервере установлен sql-model либо STRICT_TRANS_TABLES, либо STRICT_ALL_TABLES. Согласно запросу в integer поле идет попытка вставить строковое значение, что недопустимо. Вам нужно использовать дополнительное правило валидации валидатора CDefaultValueValidator, setOnEmpty = null.
Во время валидации значение свойства id_manufactured, если оно не имеет установленного значения, будет установлено в null, и запрос должен успешно отработать. Вообще - strict mode это хорошо. Лучше писать SQL, как можно приблеженное к стандарту.
Во время валидации значение свойства id_manufactured, если оно не имеет установленного значения, будет установлено в null, и запрос должен успешно отработать. Вообще - strict mode это хорошо. Лучше писать SQL, как можно приблеженное к стандарту.
-
- Сообщения: 14
- Зарегистрирован: 2014.07.18, 05:55
Re: Ошибка при неявной записи NULL в таблицу MySQL
Не так давно купил новый компьютер, перенёс на него рабочую среду со старого - теперь данная ошибка не воспроизводится.
-
- Сообщения: 14
- Зарегистрирован: 2014.07.18, 05:55
Re: Ошибка при неявной записи NULL в таблицу MySQL
Спасибо iAchilles! Ваш совет про CDefaultValueValidator, setOnEmpty = true помог исправить ошибку, которая опять стала появляться.