3

我正在使用 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 中。

4

2 回答 2

2

实际上这是您使用的 mysql 5.1.60 中的一个错误,在早期版本的 mysql 中不是问题。

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

于 2013-07-17T06:05:36.503 回答
1

检查您的“innodb_flush_log_at_trx_commit” 系统变量并将其设置为 1,然后重试

于 2013-07-17T05:45:30.203 回答