【MySQL】【MariaDB】接続しているDBがMySQLかMariaDBかプログラム上で識別する

  • 2020年5月7日
  • SQL

 よくプログラム上からRDB(リレーショナルデータベース)に接続することがあります。その中でもMySQLとMariaDBは近しい関係にあり、同じドライバで動かすことがよくあります。DBの違い = ドライバの違い、という論理でプログラムが組まれている場合、ソースコード側から接続先がMySQLかMariaDBか識別するための関数が用意されていない場合があります。この記事ではそういった時に用いるクエリを紹介します。
 方針としては同じSQL文を発行してその結果から識別を行います。これを実現する方法は少なくとも二つあり、一つは情報関数の VERSION() を用いる方法です。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.14 情報関数#VERSION
VERSION – MariaDB Knowledge Base
 これを使うと次の様にMariaDB側には”MariaDB”の文字列が含まれたバージョン名がでます。これを元に識別が可能です。

# MySQL
mysql> SELECT VERSION();
        -> '5.6.23-standard'
# MariaDB
SELECT VERSION();
+----------------+
| VERSION()      |
+----------------+
| 10.4.7-MariaDB |
+----------------+

 同様にバージョンについてのコメントを見ることでも識別が可能です。こちらはMySQL側も自分はMySQLである、と文字列で示されています。

# MySQL
mysql> SHOW VARIABLES LIKE "version_comment";
        -> 'MySQL Community Server (GPL)'
# MariaDB
SHOW VARIABLES LIKE "version_comment";
+---------------------------------+
| Value                           |
+---------------------------------+
| mariadb.org binary distribution |
+---------------------------------+
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG