Intereting Posts
Почему вы не можете называть абстрактные функции абстрактными классами в PHP? Добавить в php / ajax не работает Таинственный номер появляется выше HTML-кода, созданного Drupal, при первом посещении страницы Групповой массив на основе ключа PHPExcel строка autoheight на объединенные ячейки w / wrapText PHP: конвертировать дату с помощью класса DateTime Существует ли $ _SERVER в PHP или нет? Не удалось создать COM-объект «X»: класс, не зарегистрированный в другой WAMP Лучшая практика: как структурировать массивы – стандарты и соглашения об именах Отображение всех имен таблиц в php из базы данных MySQL Как извлечь rar / архивные файлы и папки с помощью php в windows? PHP Script не обрабатывается php soap client, ошибка от плохой wsdl? «Исключить исключение SoapFault: Не удалось подключиться к хосту" Странные символы в пути require_once () в трассировке стека Doctrine QueryBuilder удалить с помощью соединений

Как определить, связана ли связанная база данных с MariaDB или MySQL?

В моем приложении 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 :

  • «5.7» и «8.0» Предположим, MySQL или Percona; это не будет означать MariaDB.
  • «10.2» подразумевает MariaDB; маловероятно, что MySQL и Percona долгое время доходят до «10».

Какая функция вам нужна? Существует вероятность того, что 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