2012-07-09 65 views
5

我已经执行以下查询在MySQL控制台:MySQL的: “LIMIT 5” 会导致警告

INSERT INTO pixel_window 
    SELECT id 
     FROM pixels 
     WHERE pixel_id='type2' 
      ORDER BY id DESC 
       LIMIT 5; 

,并得到:

Query OK, 5 rows affected, 1 warning (0.00 sec) 
Records: 5 Duplicates: 0 Warnings: 0 

mysql> SHOW WARNINGS\G 
*************************** 1. row *************************** 
    Level: Note 
    Code: 1592 
Message: Statement may not be safe to log in statement format. 
1 row in set (0.00 sec) 

我打得有点与查询,并发现当LIMIT被省略时,警告消失。

这个警告是什么意思?为什么LIMIT是这个子查询中的问题?

+0

我认为这是与MySQL有关的重做日志,在发生崩溃的情况下,他们会存储您正在做的所有事情......因此,以这种方式记录它可能会使恢复(直觉) – Sebas 2012-07-09 13:58:13

回答

6

这被认为是一个错误。

当您未在更新中定义'order by'子句时,可能会引发警告。 在你的情况,因为你为了通过ID它被认为是安全的(asuming ID是一个唯一的ID?)阅读更多的bug报告这里

http://bugs.mysql.com/bug.php?id=42415