Pliki cookies

Jeżeli wchodzisz na tę stronę i nie masz zablokowanych plików cookie w przeglądarce jednocześnie zgadzasz się na zapisywanie tych plików na Twoim dysku.
Szczegóły są w zakładce "Pliki cookies"

Archiwa
Kategorie

phpBB – Nie istnieją żadne posty dla tego tematu

Bywa, że forach opartych na phpBB v2 (i tylko w wersji 2) występuje błąd polegający na tym, że na ostatniej stronie wątku otrzymujemy komunikat:
„Nie istnieją żadne posty dla tego tematu”
Właśnie taka przyjemność mnie trafiła.

Skąd się bierze taki błąd i co z nim można zrobić?
Błąd wynika z braku transakcyjności phpBB. Przy kasowaniu postu, na skutek przerwania operacji  zniknął rekord  z treścią z tablicy phpbb_post_texts ale nie  zniknął z tablicy phpbb_posts. Baza stała się niespójna.

Rozwiązania proponowane na różnych forach przyprawiły mnie o dreszcze. Kilkudziesięcioliniowe fragmenty w php rozwiązywały niezrozumiały problem w niezrozumiały mi sposób. Po chwili analizy kodu machnąłem takie drobne zapytanie w sql. Mam wrażenie, że jest dużo bardziej zrozumiałe:

delete p.* FROM phpbb_posts p
LEFT JOIN phpbb_posts_text t ON p.post_id = t.post_id
WHERE t.post_id IS NULL;

Tłumacząc sql na ludzki:

Usuwamy takie wiersze z tablicy  phpbb_posts, które po złączeniu zewnętrznym phpbb_posts z tablicą phpbb_posts_text nie znalazły swoich odpowiedników.

Na małym PC, skrypt oczyścił mi forum zawierające ponad 50 000   postów w niecałą sekundę.

5 odpowiedzi na „phpBB – Nie istnieją żadne posty dla tego tematu”

  • a czy masz jakis pomysl na usuniecie tego bledu w phpbb3 ?pozdrawiam

  • A tuś mi zabił ćwieka 🙂
    Zajrzałem do skryptów bazy i jak mi się wydaje na pierwszy rzut oka, ten błąd nie ma prawa wystąpić, bo tabele phpbb_posts i phpbb_posts_text w phpbb3 są połączone!
    Musiałbym mieć przykład, żeby zdiagnozować.

  • a czy te bledy razem z bledna baza z phpbb2 przekonwertowuja sie na phpbb3 ?

  • Jak pisałem poprzednio, ten błąd, który opisywałem, nie ma prawa wystąpić w phpbb3. Wynika to ze struktury danych.
    Baza jest inna niż phpb2, więc błąd nie może ani powstać ani zostać przeniesiony.
    Jeżeli jednak taki komunikat występuje w phpbb3, oznacza, że twórcy programu tym samym komunikatem oznaczyli zupełnie inny błąd. Niestety (a może całe szczęście) nie natrafiłem na niego, więc nie wiem kiedy może wystąpić. A brakuje mi samozaparcia, żeby dłubać w kodzie nie mając błędnej bazy.

  • dziekuje za wyczerpującą odpowiedz . kłaniam sie nisko