我正在使用MySQL 5.1.60
我有一个名为“文件夹”的表
CREATE TABLE `folder` (
`folder_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`parent_id` int(10) unsigned DEFAULT NULL,
`update_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`folder_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
我为它插入一个值。
INSERT INTO `folder` (`name`) VALUES ('test_name');
之后我执行选择查询
查询是
SELECT * FROM folder f WHERE f.folder_id IS NULL
但令人惊讶的是它实际上返回了最后一个插入的行(仅在第一次运行时)。
为什么在MySQL中发生这种行为。
答案 0 :(得分:2)
实际上它是你正在使用的mysql 5.1.60中的一个错误,并且它在早期版本的mysql中不是问题。
然而,您可以通过运行此命令在当前版本的mysql中修复它: MySQL的> SET sql_auto_is_null = 0;
答案 1 :(得分:1)
检查您的"innodb_flush_log_at_trx_commit"系统变量 并将其设置为1,然后再试一次