Bug #71452 | Error on legal MEMORY Engine table deletion in safe update mode | ||
---|---|---|---|
Submitted: | 22 Jan 2014 3:07 | Modified: | 22 Jan 2014 20:36 |
Reporter: | Stephen Richards | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Storage Engines | Severity: | S2 (Serious) |
Version: | 5.5.27/5.6 | OS: | Windows (7) |
Assigned to: | CPU Architecture: | Any | |
Tags: | memory engine safe update |
[22 Jan 2014 3:07]
Stephen Richards
[22 Jan 2014 3:08]
Stephen Richards
"2 rows affected" not 3, in my example. That is not the problem. I did 3 the first time I tested this.
[22 Jan 2014 20:36]
MySQL Verification Team
Thank you for the bug report. Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.15 MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> USE TEST Database changed mysql> CREATE TABLE memorytest ( -> `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, -> `STRINGDATA` varchar(45) NOT NULL, -> PRIMARY KEY (`ID`) -> ) ENGINE=InnoDb AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; Query OK, 0 rows affected (0.33 sec) mysql> insert into memorytest (id, stringdata) values (1, 'a'), (2, 'b'); Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> set sql_safe_updates = 1; Query OK, 0 rows affected (0.00 sec) mysql> delete from memorytest where id>0; Query OK, 2 rows affected (0.03 sec) mysql> insert into memorytest (id, stringdata) values (1, 'a'), (2, 'b'); Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> alter table memorytest engine=MEMORY; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> delete from memorytest where id>0; ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column mysql> SHOW CREATE TABLE memorytest\G *************************** 1. row *************************** Table: memorytest Create Table: CREATE TABLE `memorytest` ( `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `STRINGDATA` varchar(45) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MEMORY AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)