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”