Mysql在not null字段中插入或更新为null值时不会出错
Mysql在not null字段中插入或更新为null值时不会出错,mysql,null,innodb,insert-update,notnull,Mysql,Null,Innodb,Insert Update,Notnull,我有一张桌子 CREATE TABLE `devicelist` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `ip` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, `serial` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `networkname` varchar(200) COLLATE utf8_unicode_c
我有一张桌子
CREATE TABLE `devicelist` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ip` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`serial` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`networkname` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
`login` varchar(130) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(130) COLLATE utf8_unicode_ci DEFAULT NULL,
`peopleid` int(10) unsigned NOT NULL,
`deviceid` int(10) unsigned NOT NULL,
`placeid` int(10) unsigned NOT NULL,
`stationid` int(10) unsigned NOT NULL,
`place` text COLLATE utf8_unicode_ci,
`date` date NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `placeid` (`placeid`),
KEY `stationid` (`stationid`),
KEY `peopleid` (`peopleid`),
KEY `deviceid` (`deviceid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
正如您所看到的,串行设置为非空,但是当我像这样运行查询时
UPDATE DeviceList SET serial = NULL WHERE id = 1
它输出
1 row affected. ( Query took 0.0079 sec )
为什么要将空字段插入非空字段?我希望发生错误:D ///******************************编辑 我找到了答案
问题出现在sql_模式下
默认情况下,我的sql\u模式为空
iw通过
将其更改为严格的所有表格
SET GLOBAL sql_mode='STRICT_ALL_TABLES'
它应该而且确实会抛出错误。我猜你在问题中发布的
create table
与实际的表定义不符(考虑到你有一个语法错误-额外的逗号)。MySQL让我今天很郁闷,所以我只是分享一下我学到的东西
MySQL 5.6默认为无引擎替换
MySQL 5.7默认为仅按
分组,严格的转换表
,日期中无零
,无零日期
,零除法错误
,无自动创建用户
,无引擎替代
正如MySQL参考手册中所述
MySQL安装程序可以在安装过程中配置SQL模式。例如,mysql\u install\u db在基本安装目录中创建一个名为my.cnf的默认选项文件
我更新了完整的表定义,希望这有助于找到problem@KoSMoS:请仔细检查更新前是否没有
,
触发器,该触发器可能会动态更改“串行”。@a1ex07我在:D中的生活中没有在mysql中创建任何触发器。是否有任何默认触发器?在phpmyadmin中,它表示“没有要显示的触发器”。@KoSMoS:还有一件事需要尝试:根据服务器的操作系统,mysql中的表名可能区分大小写。因此,DeviceList
和DeviceList
可以是两个不同的表。仔细检查SHOW CREATE TABLE DeviceList
并查看是否有serial NOT NULL
存在。。。