【发布时间】:2017-09-22 12:06:57
【问题描述】:
我的 PHP 应用程序有要求,包括“MySQL 5.7+ 或 MariaDB 10.2+”。我如何判断这些替代方案中的哪一个是满意的?
我知道如何比较版本号,也知道如何从数据库中获取版本号,但我不知道如何确定它是哪种数据库。
我试过了
select version()
这仅返回版本号和服务器操作系统信息,而不是数据库类型。
【问题讨论】:
标签: php mysql pdo version mariadb
我的 PHP 应用程序有要求,包括“MySQL 5.7+ 或 MariaDB 10.2+”。我如何判断这些替代方案中的哪一个是满意的?
我知道如何比较版本号,也知道如何从数据库中获取版本号,但我不知道如何确定它是哪种数据库。
我试过了
select version()
这仅返回版本号和服务器操作系统信息,而不是数据库类型。
【问题讨论】:
标签: php mysql pdo version mariadb
在VARIABLES 中查找aria_block_size。它的存在几乎肯定意味着某些版本的 MariaDB 而不是 MySQL,也不是 Percona。 (至少在不久的将来。)
version的开头部分:
您需要什么功能? Percona 有可能在 MariaDB 10.2 来自 MySQL 之前对其进行改造。
即使version 是5.1.53-rel11.7-log 或5.5.35-0ubuntu0.12.04.2-log,第一部分也会为您提供 MySQL/MariaDB/Percona 版本的重要部分。
Percona 版本如下所示:5.5.31-30.3-log、5.6.30-76.3-56-log、5.6.19-67.0-log -- 请注意初始 3 之后的额外 2 或 3 个数字。
MariaDB 总是以 N.N.N-MariaDB 开头
Oracle 的 MySQL 以N.N.N 开头,但可能会以-enterprise(付费版)、-community(免费版)、-0ubuntu0(由 Ubuntu 移植)、-Debian 等继续。
MariaDB:5.1、5.2、5.3、5.4、5.5、10.0、10.1、10.2、10.3、10.4、10.5
Oracle 和 Percona:5.1、5.5、5.6、5.7、8.0
8.0 周期才刚刚开始。这意味着 5.6 即将关闭,而 5.7 还剩下一些生命,但不会有太多新内容。
澄清什么是“主要”版本。
对于 MySQL(和 Percona),这些是“主要的”,它们不是
连续':5.1、5.5、5.6、5.7、8.0。
对于 MariaDB:5.1、5.2、5.3、5.4、5.5、10.0、10.1、10.2、10.3、10.4、10.5。
【讨论】:
$info = $pdo->query("SHOW VARIABLES like '%version%'")->fetchAll(PDO::FETCH_KEY_PAIR);
$server_vendor = strtok($info['version_comment']," ");
$server_version = $info['version'];
【讨论】:
如果您尝试从 php 应用程序内部执行此操作,您可以(
哪个 php 版本?)对于 PHP 7,使用 mysqli_get_server_info;或 会回来 服务器版本:5.5.5-10.1.23-MariaDB-9+deb9u1 php 7 http://php.net/manual/en/mysqli.get-server-info.php
php 5 & http://php.net/manual/en/function.mysql-get-server-info.php <?php
$link = mysqli_connect("localhost", "my_user", "my_password");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* print server version */
printf("Server version: %s\n", mysqli_get_server_info($link));
/* close connection */
mysqli_close($link);
?>
【讨论】: