非null自动递增列 - 但是'is null'查询返回刚刚插入的行

时间:2013-07-17 05:26:06

标签: mysql

我正在使用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中发生这种行为。

2 个答案:

答案 0 :(得分:2)

实际上它是你正在使用的mysql 5.1.60中的一个错误,并且它在早期版本的mysql中不是问题。

然而,您可以通过运行此命令在当前版本的mysql中修复它: MySQL的> SET sql_auto_is_null = 0;

答案 1 :(得分:1)

检查您的"innodb_flush_log_at_trx_commit"系统变量 并将其设置为1,然后再试一次