MySQl Update

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

MySQl Update

Beitrag von Bootenks »

Also seid dem ich mein Board rüber geschoben haben auf den Server von 1und1 da bekomme ich in der DB Maintenance bei Datenbank überprüfen in der obersten Zeile diese Fehler Meldung:
Warning: mysql_free_result(): 98 is not a valid MySQL result resource in /homepages/43/d100862137/htdocs/phpBB2/db/mysql4.php on line 318
Der Witz ist das alles funktioniert essteht halt nur diese Meldung darüber...

Ich habe die config.php korrekt geändert. Einfach die 4 davor und die neuen Hostdaten dazu...

jemand eine Ahnung?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Schau mal nach, ob in der admin/admin_db_maintenance.php ein
$db->sql_freeresult($result);
nach einer SQL-Anweisung steht, die nichts abfragt, also kein SELECT durchführt. Dann muss das danach raus.
Das gleiche kannst Du auch in der includes/functions_dbmtnc.php machen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

wieso entsteht solch ein problem??

da gibt es ja unzählige
$db->sql_freeresult($result);
wie soll ich da nur die richtige finden ohne was in der datei zu zerstören!

In der function_db...php gibt es diese Zeile:

Code: Alles auswählen

//
// Checks whether MySQL supports HEAP-Tables, ANSI compatible INNER JOINs and other commands
//
function check_mysql_version()
{
	global $db;

	$sql = 'SELECT VERSION() AS mysql_version';
	$result = $db->sql_query($sql);
	if( !$result )
	{
		throw_error("Couldn't obtain MySQL Version", __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$version = $row['mysql_version'];

oder die

Code: Alles auswählen

	$sql = 'SHOW TABLE STATUS';
	$result = $db->sql_query($sql);
	if( !$result )
	{
		throw_error("Couldn't obtain table data", __LINE__, __FILE__, $sql);
	}
	while( $row = $db->sql_fetchrow($result) )
	{
		$stat['all']['count']++;
		$stat['all']['records'] += intval($row['Rows']);
		$stat['all']['size'] += intval($row['Data_length']) + intval($row['Index_length']);
		if ( $table_prefix == substr($row['Name'], 0, strlen($table_prefix)) )
		{
			$stat['advanced']['count']++;
			$stat['advanced']['records'] += intval($row['Rows']);
			$stat['advanced']['size'] += intval($row['Data_length']) + intval($row['Index_length']);
		}
		for ($i = 0; $i < count($tables); $i++)
		{
			if ($table_prefix . $tables[$i] == $row['Name'])
			{
				$stat['core']['count']++;
				$stat['core']['records'] += intval($row['Rows']);
				$stat['core']['size'] += intval($row['Data_length']) + intval($row['Index_length']);
			}
		}
	}
	$db->sql_freeresult($result);
	return $stat;

usw...
Zuletzt geändert von Bootenks am Di 29.Jun, 2004 13:55, insgesamt 5-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Kannst Du beide drinnen lassen.
Was bewirkt sql_freeresult?
Damit wird ein abgefragtes Ergebnis, also Datensätze, wieder gelöscht, d.h. die Variable $result geleert, die Verbingung zur Tabelle beendet und einiges mehr.
Wenn nun keine Abfrage, also SELECT oder SHOW TABLE oder ähnliches vorliegt, um eben Datensätze abzurufen, läuft sql_freeresult (dahinter steht eigentlich eine andere Funktion) auf einen Fehler, der gerade von mysql 4.x nicht ignoriert wird.
Daher ist das Script zu prüfen, ob es irgendwo ein $db->sql_freeresult($result); gibt, das nach einer Nicht][n]-Abfrage sondern nach z.B. INSERT INTO, UPDATE, DELETE oder Ähnlichem steht.
Denn wo nichts zurückkommt, kann man auch nichts entfernen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

oje ich hoffe ich habe das verstanden ^^

Ich danke erstmal für deine Hilfe!
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Keine Ursache.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Bootenks
Beiträge: 1836
Registriert: Sa 29.Mai, 2004 23:36
Wohnort: G?rlitz (?stlichste Stadt Deutschlands)

Beitrag von Bootenks »

Code: Alles auswählen

		if( !$row || $row['first_post'] == '')
	{
		return DELETED;
	}
	$db->sql_freeresult($result);

das ist die einzigste zeile die ich gefunden hab die vorher ein delete hat
Nur ein Informatik Student. ^^
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann raus damit.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
ThaRipsta
Beiträge: 393
Registriert: So 25.Apr, 2004 14:15

Beitrag von ThaRipsta »

ich hatte auchmal ein ähnliches problem nach nem serverswitch, hat sich rausgestellt, die mySQL version hatte sich geändert und die config.php aber nicht :-D

war dann auch viel fehlerhaft :(
Antworten