В моем приложении PHP есть требования, в том числе « MySQL 5.7+ или MariaDB 10.2+ ». Как я могу определить, какая из этих альтернатив удовлетворена?
Я знаю, как сравнивать номера версий, а также получать номер версии из базы данных, но я не знаю, как определить, какая именно база данных.
Я пытался
select version()
Это возвращает только номер версии и информацию о серверной ОС, но не тип базы данных.
$info = $pdo->query("SHOW VARIABLES like '%version%'")->fetchAll(PDO::FETCH_KEY_PAIR); $server_vendor = strtok($info['version_comment']," "); $server_version = $info['version'];
Посмотрите в 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
– Обратите внимание на дополнительные 2 или 3 числа после начального 3.
MariaDB всегда начинается с NNN-MariaDB
Oracle MySQL начинается с NNN
, но может продолжаться с -enterprise
(платная версия), -community
(бесплатная версия), -0ubuntu0
(портировано Ubuntu), -Debian
и т. Д.
MariaDB: 5.1, 5.2, 5.3, 5.4, 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) они являются «основными», и они не являются последовательными »: 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.
если вы пытаетесь сделать это изнутри 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