Seite 1 von 1

Evtl. Bug im DB Maintenance Mod 1.2.2c

Verfasst: 21.10.2004 18:23
von Waagenbauer
Ich habe evtl. einen Bug im DB Maintenance 1.2.2c Mod gefunden.

Folgendes passiert bei mir ( phpBB 2.0.10, MySQL 4.0.21, PHP 4.3.8 ):

Wenn ich Optimiere bricht das Prog bei 'posts_text' ab.
Die Datei bzw. Tabelle 'posts_text.MYD' in /var/mysql ist in posts_text.TMD' umbenannt worden und der MySQL Server hängt sich auf.
Ich bekomme sogar nur mit Problemen den Server neu gestartet. Restart von MySQL nicht möglich weil noch zig Prozesse angezeigt weden.
Wenn ich die Tabelle wieder von Hand umbenenne läuft alles weiter.

Hat das auch schonmal jemand gehabt?

Außerdem bekomme ich nach dem Ausführen von verschiedenen Funktionen der Wartung eine Fehlermeldung: irgendwas in mysql4.php lief falsch.
Leider habe ich die Fehlermeldungen jetzt nicht Textmäßig parat.

Mit phpmyadmin habe ich das Problem beim Tabellenoptimieren nicht.

Re: Evtl. Bug im DB Maintenance Mod 1.2.2c

Verfasst: 21.10.2004 23:40
von Acid
Waagenbauer hat geschrieben:Wenn ich Optimiere bricht das Prog bei 'posts_text' ab.
Die Datei bzw. Tabelle 'posts_text.MYD' in /var/mysql ist in posts_text.TMD' umbenannt worden..
Ist der Name der Tabelle denn schon vor dem Benutzen des MODS "posts_text.MYD" !? Dieses *MYD bedeutet, das die Tabelle fehlerhaft zu sein scheint (eventuell vorher reparieren).
Wie gross ist deine DB (und die "posts_text"-Tabelle) ?
Außerdem bekomme ich nach dem Ausführen von verschiedenen Funktionen der Wartung eine Fehlermeldung: irgendwas in mysql4.php lief falsch.
Leider habe ich die Fehlermeldungen jetzt nicht Textmäßig parat.
Beim nächsten Mal diese Fehlermeldungen notieren und hier posten. ;)

Re: Evtl. Bug im DB Maintenance Mod 1.2.2c

Verfasst: 22.10.2004 17:39
von Waagenbauer
Acid hat geschrieben:
Waagenbauer hat geschrieben:Wenn ich Optimiere bricht das Prog bei 'posts_text' ab.
Die Datei bzw. Tabelle 'posts_text.MYD' in /var/mysql ist in posts_text.TMD' umbenannt worden..
Ist der Name der Tabelle denn schon vor dem Benutzen des MODS "posts_text.MYD" !? Dieses *MYD bedeutet, das die Tabelle fehlerhaft zu sein scheint (eventuell vorher reparieren).
Wie gross ist deine DB (und die "posts_text"-Tabelle) ?
Außerdem bekomme ich nach dem Ausführen von verschiedenen Funktionen der Wartung eine Fehlermeldung: irgendwas in mysql4.php lief falsch.
Leider habe ich die Fehlermeldungen jetzt nicht Textmäßig parat.
Beim nächsten Mal diese Fehlermeldungen notieren und hier posten. ;)
Bei mir im /var/mysql sind in allen Datenbanken pro Tabelle 3 Dateien: *.frm, *.MYD und *.MYI
Das ist bei allen DB so. Scheint doch ok zu sein, oder?

Die DB ist jetzt ges. 355MB. Die posts_text mit 369397 Einträge ist 135MB groß.

Ab 50 Usern Online bekomme ich Probleme mit dem Seitenaufbau. Das dauert dann >3sek. und manchmal viel länger. Hat das vll damit was zu tun?

Verfasst: 22.10.2004 20:28
von PhilippK
Der Mod macht eigentlich nichts anderes, als ein OPTIMIZE TABLE an die DB zu senden - also ist das etwas merkwürdig...

Welche MySQL-Version verwendest du?

Gruß, Philipp

Verfasst: 07.11.2004 14:32
von Waagenbauer
Also der 1. Fehler beim Optimieren (Abbruch bei pots_text) ist nun nicht mehr aufgetreten.

Die Fehlermeldung kommt aber immer noch nach dem Optimieren:

Code: Alles auswählen

Warning: mysql_free_result(): 75 is not a valid MySQL result resource in /opt/lampp/htdocs/testforum/db/mysql4.php on line 631
Die mysql4.php ist bei mir aber nicht mehr orginal, ich habe einen für MySQL4 angepassten GenerationTime Mod eingebaut, der aber funzt. Zeile 631 ist mysql_free_result($query_id); in dieser Funktion:

Code: Alles auswählen

function sql_freeresult($query_id = 0)
	{
		$mtime = microtime();
		$mtime = explode(" ",$mtime);
		$mtime = $mtime[1] + $mtime[0];
		$starttime = $mtime;
		
		if( !$query_id )
		{
			$query_id = $this->query_result;
		}

		if ( $query_id )
		{
			unset($this->row[$query_id]);
			unset($this->rowset[$query_id]);

			mysql_free_result($query_id);
			
			$mtime = microtime();
			$mtime = explode(" ",$mtime);
			$mtime = $mtime[1] + $mtime[0];
			$endtime = $mtime;
		
			$this->sql_time += $endtime - $starttime;
			
			return true;
		}
		else
		{
			$mtime = microtime();
			$mtime = explode(" ",$mtime);
			$mtime = $mtime[1] + $mtime[0];
			$endtime = $mtime;
		
			$this->sql_time += $endtime - $starttime;
			
			return false;
		}
	}

Verfasst: 07.11.2004 16:07
von PhilippK
Ich schau's mir später nochmals an.

Gruß, Philipp

Verfasst: 07.11.2004 22:08
von PhilippK
Also direkt kann ich nichts finden :-(
Der Tage wird wohl die Beta der 1.3.0 fertig - bitte mit der nochmals probieren.

Gruß, Philipp