Так как наш предыдущий техник скончался, я корректирую несколько частей его кода, так как он не работает, например, с MySQL 8.0
Часть кода на Perl:
@temp = `/usr/sbin/vzctl exec $server 'mysql -V 2>/dev/null'`;
chomp(@temp);
@temp = split /\s+/,$temp[0];
$mysql = $temp[4];
$mysql =~ s/\,//;
Это работает без проблем для MySQL 5.5 / 5.6 / 5.7 и со всеми версиями MariaDB.
Два примера правильного вывода:
MySQL: 5.5.33
MySQL: 10.3.18-MariaDB
Однако с MySQL 8.0 есть проблема. Я проверил это командой mysql -V, и она выводит информацию по-разному.
Обычный вывод (для всех версий MySQL / MariaDB):
mysql Ver 14.14 Distrib 5.6.46, for Linux (x86_64) using EditLine wrapper
Но с MySQL 8.0 это выглядит так:
mysql Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)
В результате вышесказанного отображается: Linux (вместо версии). До сих пор я могу понять это, так как «$ temp [4]» - это слово Linux в mysql -v.
Есть ли обходной путь для этого? Я попробовал несколько вещей, но мне не хватает знания Perl, если честно, и пока я не делаю успехов. По какой-то причине я не могу правильно отобразить версию с MySQL 8.0.
Я также пытался дурачиться с dpkg -l 'mysql-server', однако это потребовало бы дополнительных модификаций для работы также с другими дистрибутивами, такими какCentOS.
Так, может, у кого-то есть идея, как решить эту проблему для MySQL 8.0? И, может быть, я смогу чему-то научиться от этого для будущего использования. Заранее спасибо.