Cześć, słuchajcie - mam dosyć nieciekawy problem - otóż pewna tabela w bazie mojego klienta (baza jest wykorzystywana przez CMS który mu napisałem) - o nazwie "kolory" jest sporadycznie czyszczona ze wszystkich rekordów. Problem jest o tyle duży, że nigdzie w kodzie nie mam żadnego zapytania SQL które mogło by to spowodować (same SELECTy, jedno DELETE z limitem 1 i warunkiem sprawdzającym unikalny identyfikator rekordu [więc odpada]). Co może być przyczyną tego samoistnego czyszczenia się co kilka miesięcy tej nieszczęsnej tabeli? Czy ktoś z Was spotkał się już z czymś takim?
W PHPMyAdmin nie ma żadnych ostrzeżeń odnośnie jakiś błędów, tabela nie została też nawet zablokowana. Dzieje się tak jedynie z tą jedną tabelą (oparta na InnoDB - z resztą tak jak inne).
Pokaż ten kawałek kodu gdzie wywołujesz zapytanie z instrukcją DELETE. To musi być raczej wina skryptu. Powinieneś zapisywać jakieś logi, gdzie między innymi będzie zapisywana ilość skasowanych rekordów instrukcją DELETE.
jagi napisał(a)
Pokaż ten kawałek kodu gdzie wywołujesz zapytanie z instrukcją DELETE. To musi być raczej wina skryptu. Powinieneś zapisywać jakieś logi, gdzie między innymi będzie zapisywana ilość skasowanych rekordów instrukcją DELETE.
Kurcze - no właśnie nie ma problemu z tą procedurą. Kiedy jej używam - usuwany jest jeden rekord - poprawnie. Nie ma w niej błędu:
function UsunKolor($id_koloru)
{
global $baza_prefix, $uchwyt;
$id_koloru = intval($id_koloru);
$zapytanie = "DELETE FROM kolory
WHERE id_koloru=".$id_koloru." LIMIT 1";
$rezultat = mysql_query($zapytanie);
if ($rezultat)
{
return (mysql_affected_rows($uchwyt)==1);
}else
{
return false;
}
}
Nie wiem co z tą tabelą się dzieje. Bardzo dziwne rzeczy. Powyższa instrukcja jest jedyną usuwającą coś z tej tabeli i próżno w niej szukać jakiegoś błędu. Dodam, że id_koloru to klucz główny tej tabeli z wartością auto_increment.
a masz linki w aplikacji do usuwania tych kolorów (w stylu link)? Bo możesz mieć problem z brakiem autoryzacji i crawlery ci się tam pakują usuwając elementy (tylko jeden, ale odwiedzając całą listę linków czyszczą bazę)
Pokaż jeszcze wywołanie ten funkcji.