Wie kann ich sagen, ob ein Server, den ich verbinde, Percona oder MySQL oder MariaDB ist? Gibt es einen Standard Weg dies zu tun? Ich verwende derzeit SHOW VERSION
, um die Serverversion zu testen, aber ich müsste auch den Servernamen in der App anzeigen, an der ich gerade arbeite.bestimmen, ob mysql oder percona oder mariaDB
Antwort
Denken Sie daran, dass "MySQL" das Original ist und die anderen Spinoffs sind. Hier ist ein Code, der wahrscheinlich immer funktioniert:
version_comment REGEXP 'MariaDB' -- > Mariadb
version_comment REGEXP 'Percona' -- > Percona
else MySQL
version_comment
über SHOW VARIABLES
oder information_schema
zugegriffen werden.
@@version
ist nicht zuverlässig, weil Percona keine Spur hinterlässt, obwohl ich vermute, dass die '-30.3-' ein Hinweis in 5.5.31-30.3-log
ist.
(geprüft I 106 Servern.)
Sie können mit spezifischen Informationen erhalten:
SHOW VARIABLES LIKE '%vers%'
version
und version_comment
sind sehr spezifisch.
auf meinem Dev-Server, 'version_comment = (Ubuntu)', 'version = 5.5.47-0ubuntu0.14.04.1'. Keine Spur von "MySQL" String irgendwo. Ich habe geschaut, obwohl alle 'SHOW VARIABLES' Liste und nichts relevantes kam – Quamis
Dies könnte dann Verteilung spezifisch sein. Auf Fedora sehe ich "MySQL Community Server (GPL)" oder "MariaDB Server" für die beiden Instanzen, mit denen ich teste. – tadman
Scheint so, das Beispiel von http://dev.mysql.com/doc/refman/5.7/en/show-variables.html gibt 'Source distribution' an. – Quamis
Also kann ich davon ausgehen, dass Percona & MariaDB immer ihre Namen melden und MySQL hier anders agiert? – Quamis
Meine Antwort basiert auf empirischen Beweisen. Basierend auf der Historie ... MySQL ist das Basisprodukt (jetzt im Besitz von Oracle), weshalb es keinen Grund gibt, in den Einstellungen spezifisch zu sein. Die anderen sind Spin-offs, so dass sie Bedarf an solchen fühlen. –
Macht Sinn, thx – Quamis