Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检测连接的数据库是MariaDB还是MySQL?_Php_Mysql_Pdo_Version_Mariadb - Fatal编程技术网

Php 如何检测连接的数据库是MariaDB还是MySQL?

Php 如何检测连接的数据库是MariaDB还是MySQL?,php,mysql,pdo,version,mariadb,Php,Mysql,Pdo,Version,Mariadb,我的PHP应用程序有需求,包括MySQL 5.7+或MariaDB 10.2+。我如何判断这些备选方案中哪些是满意的 我知道如何比较版本号,也知道如何从数据库中获取版本号,但我不知道如何确定它是哪种数据库 我试过了 选择版本 它只返回版本号和服务器操作系统信息,而不返回数据库类型。查找aria\u block\u大小的变量。它的存在几乎肯定意味着MariaDB的某种版本,而不是MySQL,也不是Percona。至少在不久的将来 $info = $pdo->query("SHOW VARIA

我的PHP应用程序有需求,包括MySQL 5.7+或MariaDB 10.2+。我如何判断这些备选方案中哪些是满意的

我知道如何比较版本号,也知道如何从数据库中获取版本号,但我不知道如何确定它是哪种数据库

我试过了

选择版本 它只返回版本号和服务器操作系统信息,而不返回数据库类型。

查找aria\u block\u大小的变量。它的存在几乎肯定意味着MariaDB的某种版本,而不是MySQL,也不是Percona。至少在不久的将来

$info = $pdo->query("SHOW VARIABLES like '%version%'")->fetchAll(PDO::FETCH_KEY_PAIR);
$server_vendor  = strtok($info['version_comment']," ");
$server_version = $info['version'];
版本的开头部分:

5.7和8.0表示MySQL或Percona;这并不意味着你是马里亚布。 10.2亚洲开发银行;MySQL和Percona不太可能长时间达到10。 您需要什么功能?Percona有可能会在MySQL发布之前对MariaDB 10.2进行改进

即使版本为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开始,但可能会继续使用-企业付费版,-社区免费版,-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。

如果您试图从php应用程序内部执行此操作,您可以 哪个php版本?对于PHP7,使用mysqli_get_server_info;或者
    <?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);
    ?>
会回来的

服务器版本:5.5.5-10.1.23-MariaDB-9+deb9u1

PHP7
PHP5&

实际上,这些变量中的任何一个都包含数据库服务器名称,因此您的命令也只提供有关版本和操作系统的信息。在某些情况下,它们包括MySQL或mariadb.org。也许所有的案例;我说不出来。是的,一次把专业从5改为8意味着他们不想很快赶上。我添加了更多的版本信息。添加了一个主要版本的列表。MySQL和朋友不考虑5。成为少校。相反,5.7是主要的;5.7.17是次要的。