2012-07-09 9 views
5

byłem wykonując następujące zapytanie w konsoli MySQL:MySQL: "LIMIT 5" powoduje ostrzeżenia

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

I got:

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) 

Grałem trochę w zapytaniu, i okazało się, że po pominięciu LIMIT ostrzeżenie znika.

Co oznacza to ostrzeżenie? Dlaczego LIMIT jest problemem w tym podzapytaniu?

+0

myślę, że to jest związane z dziennika przerobić mysql, w razie awarii przechowują wszystko, co robisz ... Więc rejestrowanie go w ten sposób może utrudnić odzyskiwanie (intuicja) – Sebas

Odpowiedz

6

Jest to błąd.

Ostrzeżenie może zostać wygenerowane, gdy nie zdefiniujesz klauzuli "sortuj według" w aktualizacji. W twoim przypadku, to jest uważane za bezpieczne, ponieważ można zamówić przez ID (asuming ID to unikalny identyfikator?)

Czytaj więcej na bugreport tutaj: http://bugs.mysql.com/bug.php?id=42415