У меня есть таблицаMysql не ошибка при вставке или обновлении до нулевого значения на не нулевое поле
CREATE TABLE `devicelist` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ip` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`serial` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`networkname` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
`login` varchar(130) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(130) COLLATE utf8_unicode_ci DEFAULT NULL,
`peopleid` int(10) unsigned NOT NULL,
`deviceid` int(10) unsigned NOT NULL,
`placeid` int(10) unsigned NOT NULL,
`stationid` int(10) unsigned NOT NULL,
`place` text COLLATE utf8_unicode_ci,
`date` date NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `placeid` (`placeid`),
KEY `stationid` (`stationid`),
KEY `peopleid` (`peopleid`),
KEY `deviceid` (`deviceid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
, как вы видите серийный установлен в NOT NULL,
но когда я запускаю запрос как
UPDATE DeviceList SET serial = NULL WHERE id = 1
Он выводит
1 row affected. (Query took 0.0079 sec)
Почему это вставка пустого нулевого поля?
Я хочу ошибка больше появляться: D
/// ****************************** EDIT
хорошо я нашел ответ
проблемы была в sql_mode
https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sql-mode-strict
мой sql_mode был пуст по умолчанию
IW изменил его STRICT_ALL_TABLES через
SET GLOBAL sql_mode='STRICT_ALL_TABLES'
Хорошо, я обновился, чтобы завершить определение таблицы. Надеюсь, что это поможет найти проблему. – KoSMoS
здесь же ... это порождает ошибку. –
@KoSMoS: дважды проверьте, нет ли триггера 'before update', который может меняться« серийно »на лету. – a1ex07