Есть ли какой-либо параметр конфигурации, чтобы запретить MySQL вставлять пустое значение для полей, которые не имеют значения по умолчанию и не были указаны в операторе вставки? Я бы предпочел, чтобы он отклонил неверный оператор вставки.
Пример - у меня есть следующая таблица в MySQL:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`val1` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`val2` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Если вы запустите этот оператор вставки:
INSERT INTO test (val2) VALUES('a');
Вы получите этот ответ:
Query OK, 1 row affected, 1 warning (0.00 sec)
Ответ от show warnings
:
+---------+------+-------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------+
| Warning | 1364 | Field 'val1' doesn't have a default value |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)
Ответ от SELECT * FROM test
:
+----+------+------+
| id | val1 | val2 |
+----+------+------+
| 1 | | asdf |
+----+------+------+
1 row in set (0.00 sec)