Ergebnis 1 bis 12 von 12

Thema: Invalid SQL

  1. #1
    Neuer Benutzer
    Registriert seit
    14.04.2002
    Beiträge
    12

    Invalid SQL

    Ganz plötzlich erscheint beim Antworten auf einen Beitrag folgende Fehlermeldung im Skript newreply.php:

    Code:
    Datenbank Fehler in vBulletin 2.3.7:
    
    Invalid SQL: SELECT user.*, style.templatesetid
                                   FROM subscribethread,user,usergroup
                                   LEFT JOIN style ON (IF(user.styleid=0, 1, user.styleid)=style.styleid)
                                   WHERE subscribethread.threadid='5503'
                                     AND subscribethread.userid=user.userid
                                     AND usergroup.usergroupid=user.usergroupid
                                     AND user.userid<>'4'
                                     AND user.usergroupid<>'3'
                                     AND usergroup.canview = 1
                                     AND user.lastactivity>'1168497770'
    mysql error: Unknown column 'user.styleid' in 'on clause'
    
    mysql error number: 1054
    Kurz vorher kam von meinem Provider die Information, dass auf MySQL 5.0.27 umgestellt wurde. Wisst ihr Abhilfe?

  2. #2
    Neuer Benutzer
    Registriert seit
    14.04.2002
    Beiträge
    12
    Die Antwort von Mystics hier hat das Problem beseitigt.

    In der Zwischenzeit sind aber noch zwei weitere Fehler aufgetaucht (Suchen und Profil):

    Code:
    Datenbank Fehler in vBulletin 2.3.7:
    
    Invalid SQL: 
        SELECT DISTINCT post.userid, 
          thread.threadid,thread.threadid AS postid,thread.title AS threadtitle,thread.iconid AS threadiconid,thread.replycount,
          thread.views,thread.pollid,thread.open,thread.lastpost AS postdateline,thread.lastpost,thread.lastposter,
          forum.forumid,forum.title AS forumtitle,forum.allowicons,attach,
          thread.postusername AS usrname,
          user.userid AS postuserid,
          threadicon.iconpath AS threadiconpath,threadicon.title AS threadicontitle
        FROM
          thread,forum
        LEFT JOIN user ON user.username=thread.postusername
        LEFT JOIN icon AS threadicon ON thread.iconid=threadicon.iconid
        LEFT JOIN post ON (thread.threadid = post.threadid AND post.userid = '4' AND post.visible = 1)
        WHERE
          thread.forumid=forum.forumid AND thread.threadid IN (0,5495,5484,5483,5491,5486,5460,5466,5468,5370,5449,4429,4117,4116,3478,3480,5395,5404,3016,5358,5274,5250,5220,5190,5098,4862)
        ORDER BY
          thread.lastpost DESC,thread.lastpost DESC
    mysql error: Unknown column 'thread.postusername' in 'on clause'
    
    mysql error number: 1054
    
    Datum: Thursday 11th of January 2007 05:44:22 PM
    Script: http://forum.domain.de/search.php?s=&action=showresults&searchid=309964&sortby=lastpost&sortorder=descending
    Referer:
    Code:
    Datenbank Fehler in vBulletin 2.3.7:
    
    Invalid SQL: SELECT privatemessage.*,touser.username AS tousername,fromuser.username AS fromusername,icon.title AS icontitle,icon.iconpath FROM privatemessage,user AS touser,user AS fromuser LEFT JOIN icon ON icon.iconid=privatemessage.iconid WHERE privatemessage.userid='4' AND folderid=0 AND touser.userid=privatemessage.touserid AND fromuser.userid=privatemessage.fromuserid AND messageread=0  ORDER BY dateline DESC
    mysql error: Unknown column 'privatemessage.iconid' in 'on clause'
    
    mysql error number: 1054
    
    Datum: Thursday 11th of January 2007 05:47:39 PM
    Script: http://forum.domain.de/usercp.php?s=
    Referer: http://forum.domain.de/search.php?s=
    Kann Mystics hier auch nochmal helfen?

  3. #3
    vBulletin-Germany Team Avatar von Mystics
    Registriert seit
    01.11.2001
    Alter
    38
    Beiträge
    27.471
    Sorry, aber vB2 auf MySQL 5 komplett lauffähig zu bekommen, ist viel zu aufwändig. Ich denke, da werden noch viel mehr Fehler kommen. Ich würde dringend zu einem Update raten.

    Die Fehlerbehebung ist aber immer gleich...alle Tabellen, die direkt in FROM aufgerufen werden, müssen einzeln mit LEFT JOIN aufgerufen werden.

    Ersetze in der search.php:
    Code:
        FROM
          thread,forum".iif(strpos($search[query],"searchindex")>0,",searchindex","")."
    mit:
    Code:
        FROM thread
    	LEFT JOIN forum ON (thread.forumid = forum.forumid)
    	".iif(strpos($search[query],"searchindex")>0,"LEFT JOIN searchindex ON (thread.threadid = searchindex.postid)","")."
    Ersetze in der usercp.php:
    Code:
    $messages = $DB_site->query("SELECT privatemessage.*,touser.username AS tousername,fromuser.username AS fromusername,icon.title AS icontitle,icon.iconpath FROM privatemessage,user AS touser,user AS fromuser LEFT JOIN icon ON icon.iconid=privatemessage.iconid WHERE privatemessage.userid='$bbuserinfo[userid]' AND folderid=0 AND touser.userid=privatemessage.touserid AND fromuser.userid=privatemessage.fromuserid AND messageread=0 $ignoreusers ORDER BY dateline DESC");
    mit:
    Code:
    $messages = $DB_site->query("
    	SELECT privatemessage.*,touser.username AS tousername,fromuser.username AS fromusername,icon.title AS icontitle,icon.iconpath
    	FROM privatemessage
    	LEFT JOIN user AS touser ON (touser.userid=privatemessage.touserid)
    	LEFT JOIN user AS fromuser ON (fromuser.userid=privatemessage.fromuserid)
    	LEFT JOIN icon ON icon.iconid=privatemessage.iconid
    	WHERE privatemessage.userid='$bbuserinfo[userid]'
    		AND folderid=0 AND touser.userid=privatemessage.touserid
    		AND fromuser.userid=privatemessage.fromuserid
    		AND messageread=0 $ignoreusers
    	ORDER BY dateline DESC
    ");
    Ich denke, jetzt sollte der Ansatz klar sein

  4. #4
    Neuer Benutzer
    Registriert seit
    14.04.2002
    Beiträge
    12
    Danke Mystics.

    Ich habe mittlerweile auch den Grund herausgefunden. Ab MySQL 5 hat der JOIN-Operator Vorrang vor dem Komma-Operator. Man muss also einfach nur die Argumente in der FROM-Anweisung klammern. Eine Erklärung gibt es hier (drittletzter Absatz).

    Ein Upgrade auf v3 ist mit ziemlich viel Aufwand verbunden. Das Upgrade selbst geht sicher recht fix (sofern es keine Probleme mit der Datenbank gibt). Das zeitaufwändige ist dann aber die Anpassung, schließlich soll das neue Forum ja wieder wie das alte aussehen. Und da es das alte bisher immer noch zufriedenstellend tut, schiebe ich das Upgrade eben immer wieder auf.

  5. #5
    vBulletin-Germany Team Avatar von Mystics
    Registriert seit
    01.11.2001
    Alter
    38
    Beiträge
    27.471
    Ah, sehr interessant, danke für die Info, den genauen Grund wusste ich auch noch nicht.

  6. #6
    Benutzer
    Registriert seit
    21.07.2003
    Beiträge
    45
    Ich habe genau den gleichen Fehler (vBulletin 2.3.x und MySQL 5.x) und kann momentan ebenfalls nicht auf eine höhere vBulletin Version updaten, habe es aber für die nächste Zeit geplant. Vielleicht kann mir jemand in der Zwischenzeit helfen, damit die Suchfunktion wieder funktioniert, ich bin extrem verzweifelt.

    In der search.php scheint noch eine weitere Änderung erforderlich zu sein:

    Code:
        FROM
          post".iif(strpos($search[query],"searchindex")>0,",searchindex","").",thread
        LEFT JOIN forum ON forum.forumid=thread.forumid
        LEFT JOIN user ON user.userid=post.userid
        LEFT JOIN icon AS threadicon ON thread.iconid=threadicon.iconid
        LEFT JOIN icon AS posticon ON post.iconid=posticon.iconid
    Kann mir jemand helfen, diesen Code so umzuwandeln, wie hier vorgeschlagen wurde? Also wie folgt:

    "Die Fehlerbehebung ist aber immer gleich...alle Tabellen, die direkt in FROM aufgerufen werden, müssen einzeln mit LEFT JOIN aufgerufen werden."

    Für jede Hilfe wäre ich wahnsinnig dankbar!!!

  7. #7
    Benutzer
    Registriert seit
    21.07.2003
    Beiträge
    45
    Hallo noch mal,

    ich weiß zwar nicht wie, aber ich glaube ich habe das Problem irgendwie selbst gelöst (try and error):


    ALT:

    Code:
        FROM
          post".iif(strpos($search[query],"searchindex")>0,",searchindex","").",thread


    NEU:

    Code:
        FROM post
             LEFT JOIN thread ON (post.threadid = thread.threadid)
             ".iif(strpos($search[query],"searchindex")>0,"LEFT JOIN searchindex ON (post.postid = searchindex.postid)","")."
    Ist das so korrekt?

    Hoffentlich waren das jetzt alle Dateien. Habe versucht, möglichst alle Funktionen meines VBulletins einmal anzutesten/-klicken und zu schauen, ob die SQL-Fehlermeldung doch noch irgendwo auftaucht. Gefunden habe ich nichts weiter, aber bei meinem Glück habe ich sicher die Hälfte übersehen... :-/

  8. #8
    Benutzer
    Registriert seit
    21.07.2003
    Beiträge
    45
    Sorry für den "Spam", aber eine Datei habe ich spontan noch gefunden: admin/misc.php

    Die Funktion "Update Thread Info" im Admin CP gab eine Fehlermeldung aus. Habe den Code wie folgt verändert:

    ALT:

    Code:
    FROM post,thread
    LEFT JOIN attachment ON attachment.attachmentid=post.attachmentid
    WHERE thread.threadid=post.threadid


    NEU:

    Code:
    FROM post
    LEFT JOIN thread ON (post.postid = thread.threadid)
    LEFT JOIN attachment ON attachment.attachmentid=post.attachmentid
    WHERE thread.threadid=post.threadid
    Ich bin mir unsicher wg. "post.postid = thread.threadid" - stimmt das so?

    Die Funktion "Update Thread Info" wurde nach der Änderung ohne Fehlermeldung durchgeführt und es sieht auf den ersten Blick alles richtig aus. Möchte natürlich trotzdem nicht, dass dadurch alles durcheinander gebracht wird (habe das Script auf einer Testebene ausgeführt und nicht mit LIVE-Daten).

  9. #9
    vBulletin-Germany Team Avatar von pogo
    Registriert seit
    01.06.2001
    Ort
    Hannover
    Alter
    44
    Beiträge
    16.443
    Blog-Einträge
    5
    Das stimmt sicher nicht, da eine postid einen Beitrag referenziert und eine threadid ein Thema.

    Mein Wunschzettel
    Warum du keine Anhänge herunterladen kannst!
    Suchst du Hacks, Add-ons, Modifikationen, Styles, Buttons und mehr? -> Auf zu vB.org!

  10. #10
    Benutzer
    Registriert seit
    21.07.2003
    Beiträge
    45
    Ok, Gegenvorschlag!

    Wäre "post.threadid = thread.threadid" besser?

  11. #11
    vBulletin-Germany Team Avatar von pogo
    Registriert seit
    01.06.2001
    Ort
    Hannover
    Alter
    44
    Beiträge
    16.443
    Blog-Einträge
    5
    Sieht besser aus. Ob es aber wirklich besser ist und die Probleme mit MySQL 5 behebt, kann ich leider nicht sagen.

    Mein Wunschzettel
    Warum du keine Anhänge herunterladen kannst!
    Suchst du Hacks, Add-ons, Modifikationen, Styles, Buttons und mehr? -> Auf zu vB.org!

  12. #12
    Benutzer
    Registriert seit
    21.07.2003
    Beiträge
    45
    Ich danke dir!

    "Update Thread Info" läuft mit dieser Änderung nun deutlich länger als vorher, ohne Fehlermeldungen.

    Bleibt zu hoffen, dass diese Notlösung für keine weiteren Überraschungen sorgt. Ein Dauerzustand soll das ja auch nicht sein, aber für eine Umstellung auf eine aktuelle vBulletin Version fehlt mir momentan die Zeit (muss Server wechseln, deshalb dieses ganze Drama). :-/

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Invalid SQL: Duplicate entry '7776' for key 1
    Von eJunkie im Forum vBulletin 3.6 Fragen und Probleme
    Antworten: 3
    Letzter Beitrag: 10.08.2006, 21:02
  2. Invalid SQL???
    Von klaush im Forum vBulletin 3.5 Fragen und Probleme
    Antworten: 1
    Letzter Beitrag: 02.11.2005, 22:21
  3. Invalid SQL beim Import der User - ImpEx
    Von °°Ben³ im Forum vBulletin 3.0 Fragen und Probleme
    Antworten: 2
    Letzter Beitrag: 06.09.2005, 19:46
  4. Invalid SQL - Benötige Hilfööö!
    Von Sparkiller im Forum MySQL
    Antworten: 2
    Letzter Beitrag: 06.05.2003, 22:08
  5. Invalid SQL: SELECT COUNT(*)
    Von kaiandeve im Forum vBulletin 2 Fragen und Probleme
    Antworten: 31
    Letzter Beitrag: 29.10.2002, 13:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •