Thema: Vielleicht ein Bug bei Prüfung der Datenbankversion?

Hallo Olaf,

ich bin mir nicht 100% sicher, aber ich glaube, die Klasse zur Prüfung der DB-Version hat 'nen kleinen Bug:
Während des Setups wird mittels setup/database.php die Version der Datenbank überprüft. Anschließend wird der Rückgabewert per Regexp "gesäubert" und ausgewertet.

Unter Ubuntu 12.04 ist der ungesäuberte Rückgabewerte 5.5.24-0ubuntu0.12.04.1. Das Ergebnis nach preg_replace ist 2.04.1.

Und logischerweise ist dieses Ergebnis nach Auswertung kleiner als 4.1.7, erzeugt einen entsprechenden Fehler und das Setup kann nicht zu Ende geführt werden.

Leider werde ich aus dem Regexp nicht schlau, um sagen zu können, wie er richtig lauten müsste. Aber vielleicht reicht meine Beschreibung ja als Anhaltspunkt.

Gruß,
Sebastian

Re: Vielleicht ein Bug bei Prüfung der Datenbankversion?

Hab' mal 'ne Weile rumgesucht.

Was wäre mit

preg_replace("=(.*?)([0-9]+\.[0-9]+\.[0-9]+)(.*)=", '$2', $version['Value']);

anstelle von

preg_replace("=(.*)([0-9]+\.[0-9]+\.[0-9]+)(.*)=", '$2', $version['Value']);

Bin mir nur nicht sicher, ob das für alle Betriebssysteme 'ne Lösung ist oder nur auf mich zutrifft.

Gruß,
Sebastian

Re: Vielleicht ein Bug bei Prüfung der Datenbankversion?

Hallo Sebastian,

sebastian schrieb:

Was wäre mit

preg_replace("=(.*?)([0-9]+\.[0-9]+\.[0-9]+)(.*)=", '$2', $version['Value']);

anstelle von

preg_replace("=(.*)([0-9]+\.[0-9]+\.[0-9]+)(.*)=", '$2', $version['Value']);

mit der regex funktioniert es bei dir, richtig?

Linux Distributionen sind leider etwas "geschwätzig" hmm Ich überprüfe das Pattern mal anhand von Signaturen anderer mysql Distributionen. Im Grunde bräuchte man mittlerweile das erste "(.*)" gar nicht, da die Konvention vorsieht, das eine Datenbanksignatur immer mit der Versionsnummer beginnt, und - wenn dann - alles weitere angefügt wird.

Anyway, dir vielen Dank für deinen Hinweis!

gruss
Olaf