小编Kic*_*art的帖子

MySQL使用NULL删除问题

我们发现了删除记录的问题,这似乎取决于特定版本的MySQL.但是,我无法找到任何关于这个问题的提及,以便知道它何时修复.

一些代码试图在主键为NULL(应该永远不会发生)的情况下进行删除,并使用框架生成代码.MySQL删除了先前插入的行,其中包含有效的非空主键.

可以在这里证明这个问题.

测试表: -

CREATE TABLE IF NOT EXISTS `fred_delete` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `test` varchar(25) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

然后执行以下sql: -

INSERT INTO fred_delete
(id, test)
VALUES
(NULL, 'a'),
(NULL, 'b'),
(NULL, 'c'),
(NULL, 'd'),
(NULL, 'e'),
(NULL, 'f'),
(NULL, 'g');

DELETE FROM fred_delete WHERE id IS NULL;

SELECT * FROM fred_delete;
Run Code Online (Sandbox Code Playgroud)

在5.1.58-log mysql安装中,这将插入7行,然后删除第一个插入的行.在5.6.12-log install上,这将插入7行,不会删除任何行.

有谁知道哪种版本的MySQL受此行为影响?或者这是配置问题?

mysql

5
推荐指数
1
解决办法
208
查看次数

标签 统计

mysql ×1