Skocz do zawartości

Ku przestrodze : mysql NOW()


papieros

Rekomendowane odpowiedzi

Od pewnego (dość długiego czasu) zauważałem dziwne działanie jednego z moich skryptów php+mysql. W końcu się wziałem za poszukiwania błędów i po dwóch dniach znalazłem bug'a.

Otóż miałem zapytanie: SELECT * FROM tablica WHERE date=NOW() (pole date typu DATE)

Zapytanie to działało w momencie pisania skryptu a i potem (dam sobie rękę uciąć). Teraz, prawdopodobnie po zmianie wersji mysql'a (hosting home.pl), zaczęło zwracać pusty result set.

A więc UWAGA!. Jeśli ktoś miał takie lub podobne zapytanie, należy je zmienić na date=CURDATE().

Odnośnik do komentarza
Udostępnij na innych stronach

Ku przestrodze:

Nie uzywamy w zapytaniach mysql funkcji NOW(), poniewaz takie zapytania nie sa optymalne (nie sa cachowane przez mysqla) :)

lepiej date wygenerowac sobie w php $date=date("Y-m-d");

i do zapytania wstawic select * from table where date='{$date}'.

Odnośnik do komentarza
Udostępnij na innych stronach

maly_swd now() jest cachowane. Chyba że mamy na myśli co innego.

--

 SELECT *
FROM (

SELECT NOW( ) AS a, SLEEP( 20 ) AS b, NOW( ) AS c
)t1, (

SELECT NOW( ) AS d, SLEEP( 20 ) AS e, NOW( ) AS f
)t2

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

https://dev.mysql.com/doc/refman/5.1/en/query-cache-how.html

funkcja np now() generuje zawsze inna wartosc, wiec nie moze byc takie zapytanie chachowane (mechanizm MYSQL CACHE).

w polowie masz:

A query cannot be cached if it contains any of the functions shown in the following table:

BENCHMARK()

CONNECTION_ID()

CONVERT_TZ()

CURDATE()

CURRENT_DATE()

CURRENT_TIME()

CURRENT_TIMESTAMP()

CURTIME() DATABASE()

ENCRYPT() with one parameter

FOUND_ROWS()

GET_LOCK()

LAST_INSERT_ID()

LOAD_FILE()

MASTER_POS_WAIT()

NOW()

RAND()

RELEASE_LOCK()

SLEEP()

SYSDATE()

UNIX_TIMESTAMP() with no parameters

USER()

UUID()

UUID_SHORT()

.....

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności