Seite 1 von 1

Beiträge sind in DB noch GELÖSCHTEN Usern zugeordnet

Verfasst: 19.08.2015 20:20
von uwe.ha
Hallo zusammen,

Google-Webmastertools zeigten mir "Serverfehler" an. Grund:
Einige (ganz alte) Beiträge in der DB waren noch einer poster_id zugeordnet, obwohl der User gar nicht mehr existiert ... und beim Aufruf dieser Post im Forum kommt dann / deshalb SQL-Error ... da hab ich wohl "früher" unsauber User gelöscht ... egal ...

Gibt es ein Tool, das in der DB Tabelle _posts überprüfen kann, ob der unter poster_id genannte User in der Tabelle _users (Feld user_id) überhaupt noch existiert?
... und wenn nicht, dass dann die poster_id auf "1" (1 = Gast) gesetzt wird.

DANKE!

Re: Beiträge sind in DB noch GELÖSCHTEN Usern zugeordnet

Verfasst: 19.08.2015 20:59
von Lehrling
Du könntest auch erst einmal probieren, ob du die Sache über das Synchronisieren der Foren hinbekommst. Gehe dazu in den Administrationsbereich zu Foren - Foren verwalten und klicke dann bei dem entsprechenden Forum (allen Foren) auf diese orangefarbenen Pfeile rechts.

Re: Beiträge sind in DB noch GELÖSCHTEN Usern zugeordnet

Verfasst: 20.08.2015 10:01
von gn#36
Ein Tool gibt es meines wissens nicht, aber eine einfache SQL Abfrage gibt's:

Code: Alles auswählen

SELECT post_id FROM phpbb_posts p
LEFT JOIN phpbb_users u ON p.poster_id = u.user_id
WHERE u.username IS NULL
Das sollte für alle Posts in der Usertabelle nachsehen ob ein User existiert, der zur poster_id passt. Wenn es den nicht gibt ist der username nicht vorhanden und die post_id wird ausgegeben.

Bitte einmal ausprobieren ob das stimmt, indem du ein paar von den ausgegebenen Post IDs im Forum aufrufst mittels: www.example.com/forumpfad/viewtopic.php?p=post_id
Wenn da der Fehler kommt dann sollte die Abfrage korrekt funktioniert haben. Bitte dann auf jeden Fall erst mal ein Backup machen. Dann kannst du mit

Code: Alles auswählen

UPDATE phpbb_posts p SET p.poster_id = 1 WHERE post_id IN (SELECT post_id FROM phpbb_posts po LEFT JOIN phpbb_users u ON po.poster_id = u.user_id WHERE u.username IS NULL)
alle posts dem ANONYMOUS zuordnen (Achtung, diese Abfrage ist vermutlich relativ langsam). Das gleiche musst du ggf. aber noch mit den topics machen, hier betrifft das ggf. mehr spalten, weil es ja auch noch sowas wie last_poster_id gibt. Abgesehen von der poster_id auch hier müsste sich das aber auch mittels synchronisation im ACP beheben lassen.

Re: Beiträge sind in DB noch GELÖSCHTEN Usern zugeordnet

Verfasst: 20.08.2015 13:12
von uwe.ha
Hallo,

habe nun mal alles synchronisiert ... hat nach 14 Jahren sicherlich nicht geschadet ;-)
... aber das Problem nicht behoben, trotzdem Danke Lehrling für die Idee!

Hab dann die SQL-Abfrage gemacht. Ja, hat alle Posts gefunden.
Da es nur 20 Posts von 4 Usern waren, hab ich die Änderungen in der DB manuell gemacht:
Hab in _posts die entsprechende poster_id auf 1 gesetzt,
und in _topics die topic_poster und topic_last_poster_id (sofern es die gelöschten user betraf) auch auf 1 gesetzt.

Das müsste es gewesen sein, oder gibt es außer poster_id, topic_poster und topic_last_poster_id sonst noch Stellen, die ich ggf. korrigieren müsste?

DANKE!!

Re: Beiträge sind in DB noch GELÖSCHTEN Usern zugeordnet

Verfasst: 21.08.2015 14:00
von gn#36
Ich glaube höchstens noch, wenn das Thema in irgend einem Forum das neueste Thema ist, dann landet es noch in der forums Tabelle. Das kannst du im Zweifel am leichtesten durch erstellen (und ggf. anschließendes Löschen) eines neuen Posts beheben.

Du könntest höchstens noch Überbleibsel deiner gelöschten User in irgendwelchen Tabellen übrig haben, sofern du nicht alles entfernt hast, z.B. in den acl Tabellen oder den custom profile fields.