Re: SQL Fehlermeldung nach Tapatalk Update 361 auf 370
Verfasst: 01.04.2013 15:07
Der Code aus der v3.6.1 schränkt das zu sehr ein. Und behebt das Problem eher zufällig.
Logischer wäre hier anstatt:
das hier zu nehmen:
Aber das ist noch nicht die Lösung des Problems.
Die Wurzel des Übels liegt in dem Fakt, daß einige topic_id aus der watch-Tabelle nicht mehr in der posts-Tabelle vorhanden sind.
Daher wird
Die eigentliche Problematik in den Tabellen kannst Du wie beschrieben mit dem KB:stk beheben.
Das ist aber keine Garantie, daß es nicht wieder passiert.
Daher:
finde in der mobiquo\function\get_inbox_stat.php der v3.7
(Außerdem werden jetzt auch die ausgeblendeten bzw. nicht für den User lesbaren Foren beachtet).
Bei ganz großen Foren wäre es sicherlich auch noch sinnvoll, die mark_time der Topics aus der track Tabelle mit einfließen zu lassen.
Logischer wäre hier anstatt:
$user->data['user_lastvisit']
das hier zu nehmen:
$user->data['user_lastmark']
Aber das ist noch nicht die Lösung des Problems.
Die Wurzel des Übels liegt in dem Fakt, daß einige topic_id aus der watch-Tabelle nicht mehr in der posts-Tabelle vorhanden sind.
Daher wird
NULL
(also nichts) zurückgegeben, was der Moderator im verlinkten Forum mittels des Löschens der NULL-Wert Spalten lösen wollte. Was das genau bewirken sollte, kann ich nicht sagen, denn die NULL Werte kommen erst durch den JOIN zustande.Die eigentliche Problematik in den Tabellen kannst Du wie beschrieben mit dem KB:stk beheben.
Das ist aber keine Garantie, daß es nicht wieder passiert.
Daher:
finde in der mobiquo\function\get_inbox_stat.php der v3.7
Code: Alles auswählen
$sql = 'SELECT t.topic_id, t.forum_id, t.topic_last_post_time FROM ' . TOPICS_WATCH_TABLE . ' tw LEFT JOIN ' . TOPICS_TABLE . ' t ON tw.topic_id=t.topic_id WHERE tw.user_id = ' . $user->data['user_id'] . ' AND ' . $db->sql_in_set('t.forum_id', $forbidden_forum_ary, true, true) ;
Code: Alles auswählen
$sql = 'SELECT t.topic_id, t.forum_id, t.topic_last_post_time FROM ' . TOPICS_TABLE . ' t LEFT JOIN ' . TOPICS_WATCH_TABLE . ' tw ON tw.topic_id=t.topic_id WHERE tw.user_id = ' . $user->data['user_id'] . ' AND ' . $db->sql_in_set('t.forum_id', $forbidden_forums, true, true);
(Außerdem werden jetzt auch die ausgeblendeten bzw. nicht für den User lesbaren Foren beachtet).
Bei ganz großen Foren wäre es sicherlich auch noch sinnvoll, die mark_time der Topics aus der track Tabelle mit einfließen zu lassen.