Source
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/**
* Database backend class for MySQL.
*/
class MysqlDbBackend extends DbBackend {
/**
* Check if 'dbversion' table exists.
*
* @return bool
*/
protected function checkDbVersionTable() {
$table_exists = DBfetch(DBselect("SHOW TABLES LIKE 'dbversion'"));
if (!$table_exists) {
$this->setError(_s('Unable to determine current Zabbix database version: %1$s.',
_s('the table "%1$s" was not found', 'dbversion')
));
return false;
}
return true;
}
/**
* Check database and table fields encoding.
*
* @return bool
*/
public function checkEncoding() {
global $DB;
return $this->checkDatabaseEncoding($DB) && $this->checkTablesEncoding($DB);
}
/**
* Check database schema encoding. On error will set warning message.
*
* @param array $DB Array of database settings, same as global $DB.
*
* @return bool
*/
protected function checkDatabaseEncoding(array $DB) {
$row = DBfetch(DBselect('SELECT default_character_set_name db_charset FROM information_schema.schemata'.
' WHERE schema_name='.zbx_dbstr($DB['DATABASE'])
));
if ($row && !in_array(strtoupper($row['db_charset']), ZBX_DB_MYSQL_ALLOWED_CHARSETS)) {