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\Carbon;
|
||||||
use Carbon\CarbonInterval;
|
use Carbon\CarbonInterval;
|
||||||
|
use DB;
|
||||||
use LibreNMS\Config;
|
use LibreNMS\Config;
|
||||||
use LibreNMS\DB\Eloquent;
|
use LibreNMS\DB\Eloquent;
|
||||||
use LibreNMS\DB\Schema;
|
use LibreNMS\DB\Schema;
|
||||||
@@ -35,12 +36,21 @@ use Symfony\Component\Yaml\Yaml;
|
|||||||
|
|
||||||
class Database extends BaseValidation
|
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)
|
public function validate(Validator $validator)
|
||||||
{
|
{
|
||||||
if (! dbIsConnected()) {
|
if (! dbIsConnected()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->checkVersion($validator);
|
||||||
$this->checkMode($validator);
|
$this->checkMode($validator);
|
||||||
$this->checkTime($validator);
|
$this->checkTime($validator);
|
||||||
$this->checkMysqlEngine($validator);
|
$this->checkMysqlEngine($validator);
|
||||||
@@ -77,6 +87,30 @@ class Database extends BaseValidation
|
|||||||
$this->checkSchema($validator);
|
$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)
|
private function checkTime(Validator $validator)
|
||||||
{
|
{
|
||||||
$raw_time = Eloquent::DB()->selectOne(Eloquent::DB()->raw('SELECT NOW() as time'))->time;
|
$raw_time = Eloquent::DB()->selectOne(Eloquent::DB()->raw('SELECT NOW() as time'))->time;
|
||||||
|
Reference in New Issue
Block a user