2017-04-25 6 views
-1

내 PHP 응용 프로그램에 "MySQL 5.7+ 또는 MariaDB 10.2+"이 포함됩니다. 이 대안들 중 어느 것이 만족 스러운지 어떻게 알 수 있습니까?연결된 데이터베이스가 MariaDB 또는 MySQL인지 여부를 어떻게 확인할 수 있습니까?

버전 번호를 비교하고 데이터베이스에서 버전 번호를 얻는 방법을 알고 있지만 데이터베이스의 종류를 결정하는 방법을 알지 못합니다.

나는

select version() 
에만 버전 번호 및 서버 OS 정보를 반환

있지만 데이터베이스 종류를 시도했다.

답변

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_sizeVARIABLES입니다. 그것의 존재는 거의 확실하게 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 버전의 중요한 부분을 제공합니다.

Percona 버전과 같이 : 5.5.31-30.3-log, 5.6.30-76.3-56-log는, 5.6.19-67.0-log이 - N.N.N-MariaDB

오라클의 MySQL이 N.N.N 시작으로 초기 3

MariaDB는 항상 시작 후 추가로 2 ~ 3 번호를 참고하지만, 계속 수 5.1, 5.2, 5.3, 5.4 : -enterprise (유료 버전), -community (무료 버전), -0ubuntu0

MariaDB 등 -Debian (우분투 포팅) , 5.5, 10.0, 10.1, 10.2
Oracle 및 Percona : 5.1, 5.5, 5.6, 5.7, 8.0

8.0주기가 막 시작되었습니다. 이것은 5.6이 곧 닫히고 5.7에 약간의 삶이 남아 있음을 의미하지만 새로운 것은별로 없을 것입니다.

"주요"릴리스의 설명.
MySQL (및 Percona)의 경우 "major"이며 연속 ': 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; 또는 < 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); 
    ?> 

가 반환됩니다 사용

서버 버전 : 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

관련 문제