Hallo MySQL-Experten!
Hat von euch schon mal jemand Erfahrungen mit der
HANDLER-Syntax von MySQL gemacht, also das wirklich praktisch angewendet?
Ich hätte gerade einen Fall, wo diese Technik ideal wäre, aber da passieren seltsame Dinge. Hier mal ein kleines Test-Script in PHP:
PHP-Code:
mysql_query("HANDLER `country` OPEN");
$rst = mysql_query("HANDLER `country` READ `continent` = ('Europe')");
$row = mysql_fetch_assoc($rst);
while ($row) {
echo $row['Continent'].", ".$row['Name']."<br>";
$rst = mysql_query("HANDLER `country` READ NEXT WHERE (`continent` = 'Europe')");
$row = mysql_fetch_assoc($rst);
}
mysql_query("HANDLER `country` CLOSE");
(Dieses Bsp. verwendet die MySQL-Beispiel-DB 'world', wobei ich der Tabelle 'country' den Index 'continent' hinzugefügt habe. Ja, ich weiß, dass man das normalerweise mit SELECT macht, ist ja auch nur ein Demo-Script. Meine eigentliche Anwendung wird in C geschrieben.)
Dieses Script funktioniert. Allerdings
nur ein mal. Beim zweiten Aufruf (Browser-Reload) wird nur noch die erste Zeile gefunden, also da wo
absolut auf den ersten Datensatz positioniert wird. Die folgenden HANDLER-Aufrufe, da wo in der Schleife
relativ zum aktuellen Satz der nächste Satz gefunden werden soll, funktionieren nicht mehr, es wird nichts gefunden.
Jetzt der Clou: Wenn man dann frustriert vom Rechner wegläuft und zwei Stunden später wieder kommt und nochmal Reload klickt, dann geht's wieder. Aber auch wieder nur
ein mal. Das muss doch ein MySQL-Bug sein, oder? Ich verwende MySQL 4.1.8, hab's mit einem DB-Server unter Linux probiert und unter WinXP. Immer das selbe.
Weiß einer was da vorgeht?
Grüße,
Martin