2017-04-25 3 views
-1

私のPHPアプリケーションには、「MySQL 5.7+またはMariaDB 10.2+」などの要件があります。どのようにこれらの選択肢のどれが満足されているかを知ることができますか?接続されたデータベースがMariaDBであるかMySQLであるかをどのように検出できますか?

バージョン番号を比較する方法と、データベースからバージョン番号を取得する方法はわかっていますが、データベースの種類を判断する方法はわかりません。

私は唯一のバージョン番号とサーバーOSの情報ではなく、データベースの種類を返します

select version() 

を試してみました。

答えて

0
$info = $pdo->query("SHOW VARIABLES like '%version%'")->fetchAll(PDO::FETCH_KEY_PAIR); 
$server_vendor = strtok($info['version_comment']," "); 
$server_version = $info['version']; 
+0

実際にこれらの変数のいずれかにはデータベースサーバー名が含まれているため、バージョンとOSに関する情報のみ。 –

+0

「MySQL」または「mariadb.org」が含まれる場合もあります。おそらくすべてのMariaDBのケース。分かりません。 –

0

aria_block_sizeについては、VARIABLESを参照してください。その存在はほぼ確実にMariaDBとの一部ではなく、 MySQLでもPerconaでもあります。 (近い将来のために、少なくとも。)

versionの先頭部分:

  • "5.7" と "8.0" を意味するものでMySQLやPercona。それはMariaDBを暗示するものではありません。
  • "10.2"はMariaDBを暗示します。 MySQLとPerconaが長時間 "10"になることはほとんどありません。

どのような機能が必要ですか? PerconaがMySQLから来る前にMariaDB 10.2から何かを改造する機会があります。

version5.1.53-rel11.7-logまたは5.5.35-0ubuntu0.12.04.2-logの場合でも、最初の部分はMySQL/MariaDB/Perconaバージョンの重要な部分を示しています。 、5.5.31-30.3-log5.6.30-76.3-56-log5.6.19-67.0-log - 最初の3

MariaDBは常にN.N.N-MariaDB

OracleのMySQLはN.N.Nから始まりますが、続けるかもしれないと開始した後、余分な2または3の数字に注意してください。

Perconaのバージョンは次のようになり5.1、5.2、5.3、5.4:-enterprise(有料版)、-community(無料版)、-0ubuntu0

MariaDBなど、-Debian、(Ubuntuので移植されました) 、5.5,10.0,10.1,10.2,102, OracleおよびPercona:5.1,5.5,5,6,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。

+0

ええ、メジャーを5から8に一度に変更すると、彼らはすぐに追いつきたくないということを意味します。 –

+0

私はいくつかのバージョン情報を追加しました。 –

+0

「メジャー」リリースのリストを追加しました。 MySQL(および友人)は "5"を考慮しません。 「メジャー」となる。代わりに、5.7が主要です。 5.7.17は「マイナー」です。 –

0

これを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 & <:または< PHP 7は、mysql_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); 
    ?> 

Serverのバージョンを返します使用しますhttp://php.net/manual/en/function.mysql-get-server-info.php

関連する問題