Можно ли отключить автоматическую вставку пустого значения для полей без значения по умолчанию в MySQL? - PullRequest
1 голос
/ 19 октября 2011

Есть ли какой-либо параметр конфигурации, чтобы запретить 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)

1 Ответ

5 голосов
/ 19 октября 2011

Вы можете включить «строгий» режим , что приведет к сбою MySQL в любых вставках, которые не предоставляют значений для полей по умолчанию.

...