结论:
在字段未指定默认值的场景中:
- 非严格模式下,若不插入数据会存储字段类型的默认值。
- 严格模式下,报错。
验证:
在 mysql 5.6.40
版本验证。
创建表:
CREATE TABLE `test_table` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`num` bigint unsigned NOT NULL,
PRIMARY KEY(`id`)
) ENGINE=InnoDB CHARSET=utf8mb4;
插入数据时仅指定 id:
INSERT INTO `test_table` (id) VALUES(1);
查询数据:
mysql> select * from test_table;
+----+-----+
| id | num |
+----+-----+
| 1 | 0 |
+----+-----+
** 严格模式下呢?会报错。见下面的测试:**
mysql> SET sql_mode = 'STRICT_TRANS_TABLES';
mysql> INSERT INTO `test_table` (id) VALUES(2);
(1364, u"Field 'num' doesn't have a default value")