Seite 1 von 2

Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown column

Verfasst: 29.12.2011 00:53
von Stefanman
Hallo zusammen,

seit heut erscheint beim Aufruf eines beliebigen Threads in unserem Forum diese Fehlermeldung.
Da ich noch wenig Erfahrung mit SQL habe, hoffe ich dass Ihr mir hier weiterhelfen könnt.
Das Forum lief bisher immer fehlerfrei.
PHP Version 3.08
Datenbank-Server: MySQL 5.0.91-log

Besten Dank!

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

Unknown column 't.topic_type' in 'where clause' [1054]

SQL

SELECT t.*, tp.topic_posted, tt.mark_time FROM (phpbb_topics t) LEFT JOIN phpbb_topics_posted tp ON (tp.topic_id = t.topic_id AND tp.user_id = 56) LEFT JOIN phpbb_topics_track tt ON (tt.topic_id = t.topic_id AND tt.user_id = 56) WHERE t.forum_id IN (4, 0) AND t.topic_type IN (2, 3) ORDER BY t.topic_time DESC

BACKTRACE

FILE: includes/db/mysql.php
LINE: 175
CALL: dbal_mysql->sql_error()

FILE: viewforum.php
LINE: 375
CALL: dbal_mysql->sql_query()

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 29.12.2011 01:34
von Mahony
Hallo
1. Was hast du getan, bevor der Fehler aufgetreten ist? MODs installiert? Falls ja welche?
2. Was steht in Zeile 375 deiner viewforum.php ?
Zeig am besten mal deine viewforum.php im Pastebin


Grüße: Mahony

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 29.12.2011 12:12
von Stefanman
Hallo Mahony,

danke für die Antwort.
zu 1: Es wurde nichts am Forum installiert oder administriert. Die einzigen Vorgänge davor waren ein Post von einem User und ein User hat sein Passwort geändert.
zu 2: Ich habe die viewforum.php hochgeladen:
https://www.phpbb.de/support/pastebin.p ... view&s=913

In Zeile 375 steht folgendes:
$result = $db->sql_query($sql);

Allerdings habe ich gerade gesehen, dass es je nach Thread teilweise verschiedene Zeilenangaben in der Fehlermeldung gibt:
Z.B. hier ist es Line 271:
FILE: viewtopic.php
LINE: 271
CALL: dbal_mysql->sql_query()

Danke

Gruß Stefan

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 30.12.2011 11:58
von gn#36
Eigentlich sieht das eher so aus, als wäre mit deiner Datenbank was nicht in Ordnung, die Spalte topic_type ist nämlich durchaus Standard und fehlt hier offenbar. Die Spalte gibt vor, ob ein Thema als Wichtig markiert wird oder nicht.

Mach ein Backup deiner aktuellen Datenbank und spiel' dann ein (hoffentlich nicht zu viel) älteres Backup der Tabelle phpbb_topics wieder ein. Oder, wenn die Tabelle nicht völlig beschädigt ist kannst du auch die fehlende Spalte wieder hinzufügen und z.B. mit dem Default 0 belegen (dann sind alle schon vorhandenen Themen normale Themen, Wichtige und Ankündigungen müsstest du manuell wieder markieren).

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 30.12.2011 22:36
von Stefanman
Hallo!

Besten Dank für diesen Tipp! Der war sehr sehr hilfreich!
Habe nun mit MySQLDumper ein Backup gemacht und anschließend die Tabelle `phpbb_topics' bearbeitet.
Habe dort die Spalte topic_type neu eingefügt und siehe da, es funktioniert wieder.
Allerdings kam dann beim Testen des Forums noch 2 weitere Fehlermeldungen die auf weitere fehlende Spalten hingedeutet haben:
- topic_views
- topic_last_post_id
habe diese dann auch noch eingefügt. (auch mit Default 0)

Da ich nicht weiss, ob noch weitere Felder fehlen, wäre es hilfreich wenn mir jemand eine Aufstellung über alle erforderlichen Spalten in der
`phpbb_topics' zukommen lassen könnte.

Eine weitere Frage die sich mir abschließend noch stellt ist,
wie kann eine Tabelle einfach so beschädigt werden?
Evtl. durch Hacker Angriff ??

Besten Dank

Gruß Stefan

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 30.12.2011 23:12
von Miriam
Könnte sein, aber ein Hacker hätte in deiner DB "richtig" aufgeräumt.

meine Standard-Tabelle phpbb_topics sieht so aus:
  • Field Type Null Key Default Extra
    topic_id mediumint(8) unsigned NO PRI NULL auto_increment
    forum_id mediumint(8) unsigned NO MUL 0
    icon_id mediumint(8) unsigned NO 0
    topic_attachment tinyint(1) unsigned NO 0
    topic_approved tinyint(1) unsigned NO MUL 1
    topic_reported tinyint(1) unsigned NO 0
    topic_title varchar(255) NO
    topic_poster mediumint(8) unsigned NO 0
    topic_time int(11) unsigned NO 0
    topic_time_limit int(11) unsigned NO 0
    topic_views mediumint(8) unsigned NO 0
    topic_replies mediumint(8) unsigned NO 0
    topic_replies_real mediumint(8) unsigned NO 0
    topic_status tinyint(3) NO 0
    topic_type tinyint(3) NO 0
    topic_first_post_id mediumint(8) unsigned NO 0
    topic_first_poster_name varchar(255) NO
    topic_first_poster_colour varchar(6) NO
    topic_last_post_id mediumint(8) unsigned NO 0
    topic_last_poster_id mediumint(8) unsigned NO 0
    topic_last_poster_name varchar(255) NO
    topic_last_poster_colour varchar(6) NO
    topic_last_post_subject varchar(255) NO
    topic_last_post_time int(11) unsigned NO MUL 0
    topic_last_view_time int(11) unsigned NO 0
    topic_moved_id mediumint(8) unsigned NO 0
    topic_bumped tinyint(1) unsigned NO 0
    topic_bumper mediumint(8) unsigned NO 0
    poll_title varchar(255) NO
    poll_start int(11) unsigned NO 0
    poll_length int(11) unsigned NO 0
    poll_max_options tinyint(4) NO 1
    poll_last_vote int(11) unsigned NO 0
    poll_vote_change tinyint(1) unsigned NO 0
Hast du mal probiert die Tabellen zu reparieren?

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 30.12.2011 23:40
von Stefanman
danke,
hab beim Abgleich gesehen dass mir auch die "poll_max_options" gefehlt hat.

Was meinst du mit reparieren?
Ich habe die Tabelle ja nun manuell repariert und die fehlenden Spalten wieder eingefügt.

Gruß Stefan

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 31.12.2011 00:06
von Miriam
Ich meinte

Code: Alles auswählen

REPAIR TABLE `phpbb_topics`
in der DB auszuführen.

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 31.12.2011 00:14
von Stefanman
leider finde ich diese Funktion bei mir nicht im MySQLdumper.
wo ist die genau?

Re: Allgemeiner Fehler - SQL ERROR [ mysql4] - Unknown colum

Verfasst: 31.12.2011 00:35
von Mahony
Hallo
Das ist keine Funktion, sondern ein SQL-Befehl. Den SQL-Befehl gibt man im Mysqldumper im SQL-Browser-Eingabefeld ein und klickt auf SQL-Befehl ausführen.

P.S. Der SQL-Befehl würde dir allerdings die fehlenden Spalten nicht zurück holen. Er dient dazu Tabellen zu reparieren.
Siehe dazu auch http://dev.mysql.com/doc/refman/5.1/de/ ... table.html


Grüße: Mahony