mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Add minimum database version check (#12581)
This commit is contained in:
@@ -26,6 +26,7 @@ namespace LibreNMS\Validations;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Carbon\CarbonInterval;
|
||||
use DB;
|
||||
use LibreNMS\Config;
|
||||
use LibreNMS\DB\Eloquent;
|
||||
use LibreNMS\DB\Schema;
|
||||
@@ -35,12 +36,21 @@ use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
class Database extends BaseValidation
|
||||
{
|
||||
const MYSQL_MIN_VERSION = '5.7';
|
||||
const MYSQL_MIN_VERSION_DATE = 'April, 2021';
|
||||
const MYSQL_RECOMMENDED_VERSION = '8.0';
|
||||
|
||||
const MARIADB_MIN_VERSION = '10.2';
|
||||
const MARIADB_MIN_VERSION_DATE = 'April, 2021';
|
||||
const MARIADB_RECOMMENDED_VERSION = '10.5';
|
||||
|
||||
public function validate(Validator $validator)
|
||||
{
|
||||
if (! dbIsConnected()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->checkVersion($validator);
|
||||
$this->checkMode($validator);
|
||||
$this->checkTime($validator);
|
||||
$this->checkMysqlEngine($validator);
|
||||
@@ -77,6 +87,30 @@ class Database extends BaseValidation
|
||||
$this->checkSchema($validator);
|
||||
}
|
||||
|
||||
private function checkVersion(Validator $validator)
|
||||
{
|
||||
$version = DB::selectOne('SELECT VERSION() as version')->version;
|
||||
$version = explode('-', $version);
|
||||
|
||||
if (isset($version[1]) && $version[1] == 'MariaDB') {
|
||||
if (version_compare($version[0], self::MARIADB_MIN_VERSION, '<=')) {
|
||||
$validator->fail(
|
||||
'MariaDB version ' . self::MARIADB_MIN_VERSION . ' is the minimum supported version as of ' .
|
||||
self::MARIADB_MIN_VERSION_DATE . '. We recommend you update MariaDB to a supported version ' .
|
||||
self::MARIADB_RECOMMENDED_VERSION . ' suggested). Failure to update MariaDB will eventually cause issues.'
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (version_compare($version[0], self::MYSQL_MIN_VERSION, '<=')) {
|
||||
$validator->fail(
|
||||
'MySQL version ' . self::MYSQL_MIN_VERSION . ' is the minimum supported version as of ' .
|
||||
self::MYSQL_MIN_VERSION_DATE . '. We recommend you update MySQL to a supported version (' .
|
||||
self::MYSQL_RECOMMENDED_VERSION . ' suggested). Failure to update MySQL will eventually cause issues.'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function checkTime(Validator $validator)
|
||||
{
|
||||
$raw_time = Eloquent::DB()->selectOne(Eloquent::DB()->raw('SELECT NOW() as time'))->time;
|
||||
|
Reference in New Issue
Block a user