Dan*_*and 4 mysql insert mysql-error-1364
我已经好几次见过这个了.我有一个服务器允许我插入一些值,而不指定其他值如下INSERT INTO table SET value_a='a', value_b='b';:( value_c是一个没有设置默认值的字段,但它在这里工作正常).当脚本移动到新服务器时,某些INSERT查询会中断,因为它要求查询指定所有非默认值,因为第一次出现未指定非默认值时会出现以下错误:
#1364 - Field 'value_c' doesn't have a default value
Run Code Online (Sandbox Code Playgroud)
设置表的默认值可能会破坏其他区域的功能,否则我会这样做.我很想知道这到底发生了什么.
pio*_*trm 15
默认情况下,其中一台服务器以严格模式运行,而另一台服务器则没有.如果服务器以严格模式运行(或者在连接中设置它)并且您尝试将NULL值插入到定义为NOT NULL的列中,则会出现#1364错误.如果没有严格模式,您的NULL值将替换为空字符串或0.
例:
CREATE TABLE `test_tbl` (
`id` int(11) NOT NULL,
`someint` int(11) NOT NULL,
`sometext` varchar(255) NOT NULL,
`somedate` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
SET sql_mode = '';
INSERT INTO test_tbl(id) VALUES(1);
SELECT * FROM test_tbl;
+----+---------+----------+---------------------+
| id | someint | sometext | somedate |
+----+---------+----------+---------------------+
| 1 | 0 | | 0000-00-00 00:00:00 |
+----+---------+----------+---------------------+
SET sql_mode = 'STRICT_ALL_TABLES';
INSERT INTO test_tbl(id) VALUES(2);
#1364 - Field 'someint' doesn't have a default value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7491 次 |
| 最近记录: |