确定选择 MySQL、Percona 还是 MariaDB

13

我如何确定连接到的服务器是Percona、MySQL还是MariaDB?是否有标准的方法可以做到这一点?目前我正在使用SHOW VERSION测试服务器版本,但我还需要在我正在开发的应用程序中显示服务器名称。

2个回答

6
记住,“MySQL”是原始版本,其他的都是它的分支。以下是一些可能总是有效的代码:
version_comment REGEXP 'MariaDB' -- > Mariadb
version_comment REGEXP 'Percona' -- > Percona
else MySQL
version_comment 可通过 SHOW VARIABLESinformation_schema 访问。 @@version 不可靠,因为 Percona 没有留下任何线索,尽管我怀疑 5.5.31-30.3-log 中的“-30.3-”是一个线索。
(我检查了 106 个服务器。) 更新 (检查了264台服务器。)
version         REGEXP 'MariaDB' -- > Mariadb
version_comment REGEXP 'Percona' -- > Percona
else MySQL

(我们可能不能相信这是最后的结论。)

那么我可以假设Percona和MariaDB总是报告它们的名称,而MySQL在这里表现不同? - Quamis
1
我的回答基于经验证据。基于历史...MySQL是基础产品(现在由Oracle拥有),因此它没有理由在设置中特定。其他的都是分支,所以它们感觉需要这样做。 - Rick James
1
一个更长的答案:http://stackoverflow.com/questions/43611296/how-can-i-detect-whether-connected-database-is-mariadb-or-mysql/43692813#43692813 - Rick James
1
请注意,此答案可能已过时。我得到的版本号为'10.3.22-MariaDB-0+deb10u1-log',版本注释为'Debian 10'。请参阅https://mariadb.com/docs/reference/mdb/system-variables/version_comment/。 - Elvex
1
@Elvex - 谢谢。我已经更新了我的答案。 - Rick James

6

您可以使用以下方式获取具体信息:

SHOW VARIABLES LIKE '%vers%'

versionversion_comment非常具体。


1
在我的开发服务器上,version_comment=(Ubuntu)version=5.5.47-0ubuntu0.14.04.1。没有任何关于 "MySQL" 字符串的痕迹。我已经查看了所有 SHOW VARIABLES 列表,但没有找到任何相关的内容。 - Quamis
这可能是特定于发行版的。在 Fedora 上,我看到我正在测试的两个实例分别为“MySQL Community Server(GPL)”或“MariaDB Server”。 - tadman
看起来,http://dev.mysql.com/doc/refman/5.7/en/show-variables.html 的示例显示“源分发”。 - Quamis
Percona有任何特殊的变量可以挑选出来吗? - tadman
我不再能访问那台服务器了,它已经重新安装过了。我本来期望innodb_*变量被命名为xtradb_*,但我不能说这是对我的问题的明确答案。 - Quamis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接