我们发现了删除记录的问题,这似乎取决于特定版本的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 ×1