在Windows 7上运行6.24(来自XAMPP v3.2.1)。对我来说,这很奇怪,当我有一个表,其中的列的Allow NULL设置为NOT NULL且没有默认值,并且尝试插入一行而不指定该列值时,我得到的是警告而不是错误。
我能够在Linux Slackware MySQL 5.5.27上重现您的MySQL行为:
mysql> CREATE TABLE `test` (
`field1` int(10) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.07 sec)
mysql> INSERT INTO test VALUES ();
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
Level: Warning
Code: 1364
Message: Field 'field1' doesn't have a default value
1 row in set (0.00 sec)
mysql> SELECT * FROM test;
+--------+
| field1 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
这与sql_mode变量有关:
当您将其设置为“ TRADITIONAL”时,它开始出现错误:
mysql> SET @@SESSION.sql_mode='TRADITIONAL';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO test VALUES ();
ERROR 1364 (HY000): Field 'field1' doesn't have a default value
Run Code Online (Sandbox Code Playgroud)