"Lost connection to MySQL server during query"

pcw

Lt. Commander
Registriert
Juli 2001
Beiträge
1.676
Ich schreib grad an nem kleinen Spiel als Mod für nen Forum (SMF).

Allerdings tritt die in der Überschrift erwähnte Fehlermeldung irgendwie jedesmal wieder auf und ich versteh nicht warum. Die Funktionsfähigkeit der Seite wird dadurch übrigens in keiner Weise beeinträchtigt. Lediglich das Errorlog wird mit jedem Seitenzugriff weiter zugemüllt, was ziemlich lästig ist.

Auf meinem PC (Windows Testserver) laufen folgende Versionen:
PHP: 5.1.1
MySQL: 5.0.15

Genaue Fehlermeldung:
Database Error: Lost connection to MySQL server during query
File: C:\Programme\Apache Group\apache2\htdocs\smf\Sources\RPG.php
Line: 325

Beanstandeter Quelltext:
Code:
321 function loadOrtInventar($oid)
322 {
323   global $db_prefix;
324   $inventar = array();
325   $result = db_query("SELECT {$db_prefix}rpg_gegenstand_eigenschaften.Eigenschaft as 'pname',{$db_prefix}rpg_gegenstand_eigenschaften.Wert as 'pwert',{$db_prefix}rpg_ort_inventar.ID_Gegenstand as 'gid' ,{$db_prefix}rpg_ort_inventar.Zustand as 'gzustand' ,{$db_prefix}rpg_ort_inventar.Anzahl as 'ganzahl' ,{$db_prefix}rpg_gegenstaende.Name as 'gname' ,{$db_prefix}rpg_gegenstaende.Beschreibung as 'gdesc', {$db_prefix}rpg_gegenstaende.Wert as 'gvalue' FROM {$db_prefix}rpg_ort_inventar LEFT JOIN {$db_prefix}rpg_gegenstaende ON ({$db_prefix}rpg_ort_inventar.ID_Gegenstand={$db_prefix}rpg_gegenstaende.ID_Gegenstand) LEFT JOIN {$db_prefix}rpg_gegenstand_eigenschaften ON {$db_prefix}rpg_gegenstand_eigenschaften.ID_Gegenstand={$db_prefix}rpg_gegenstaende.ID_Gegenstand WHERE {$db_prefix}rpg_ort_Inventar.ID_Ort=" . $oid , __FILE__, __LINE__);
326   if(mysql_num_rows($result)>0)
327   {
328     while($row = mysql_fetch_assoc($result))
329     {
330       $inventar[$row['gid']]['name'] = $row['gname'];
331       $inventar[$row['gid']]['desc'] = $row['gdesc'];
332       $inventar[$row['gid']]['value']= $row['gvalue'];
333       $inventar[$row['gid']]['zustand'][$row['gzustand']] = $row['ganzahl'];
334       $inventar[$row['gid']]['property'][$row['pname']] = $row['pwert'];
335     }
336     mysql_free_result($result);
337     return $inventar;
338   }
339   else
340   {
341     mysql_free_result($result);
342     return NULL;
343   }
344 }


Gibt es eine praktikable Möglichkeit, diesen Fehler zu umgehen/abzuschalten oder muss ich das ganze wieder als Stored Procedure laufen lassen (wodurch der Fehler nicht mehr auftritt)?

Die Funktion db_query() führt eigentlich lediglich das SQL-Statement aus und kapselt mysql_query inklusive einiger Beschränkungen für die auszuführenden Statements. Subselects oder Unions zB werden verweigert.
 
Zurück
Oben