#mysql #mariadb
#mysql #mariadb
Вопрос:
Я хочу напечатать запрос по версии MySQL в файле .sql.
Когда я использую MySQL версии 5.6, хочу напечатать (2 столбца)
SELECT user, host FROM mysql.user;
или, я использую MySQL версии 5.7 или 8, хочу распечатать (3 столбца)
SELECT user, host, account_locked FROM mysql.user;
Потому что версия MySQL 5.6 не имеет столбца account_locked.
Комментарии:
1. Вам необходимо поддерживать версии вашего кода, совместимые с DDL
Ответ №1:
mysql> SELECT * FROM information_schema.GLOBAL_VARIABLES WHERE variable_name = 'version';
--------------- -----------------
| VARIABLE_NAME | VARIABLE_VALUE |
--------------- -----------------
| VERSION | 5.6.22-71.0-log |
--------------- -----------------
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'version';
--------------- -----------------
| Variable_name | Value |
--------------- -----------------
| version | 5.6.22-71.0-log |
--------------- -----------------
1 row in set (0.00 sec)
mysql> SELECT @@version;
-----------------
| @@version |
-----------------
| 5.6.22-71.0-log |
-----------------
1 row in set (0.00 sec)
В хранимой процедуре вы можете сделать что-то вроде
IF (@@version < "5.7") THEN
SELECT user, host FROM mysql.user;
ELSE
SELECT user, host, account_locked FROM mysql.user;
ENDIF;
Становится еще сложнее, если вам также нужно обрабатывать MariaDB с его «10.x.y». И, если у Percona есть какие-либо различия, вам нужно углубиться в «версию».