Однажды в Ubuntu Server 18.04 я обновлял Zabbix 4.4 до 5.0 и обнаружил ошибку в логах во время обновления:
current database version (mandatory/optional): 04050003/04050003
required mandatory version: 05000000
optional patches were found
starting automatic database upgrade
[Z3005] query failed: [1071] Specified key was too long; max key length is 767 bytes [create index items_1 on items (hostid,key_(1021))]
database upgrade failed
В моем случае использовался сервер баз данных MariaDB 10.1.48, а минимальные версии по требованиям Zabbix 5.0 следующие:
php 7.2
MySQL 5.5.62
MariaDB 10.0.37
PostgreSQL 9.2.24
Oracle 11.2
К счастью с этим все было хорошо, я проверил командами:
php -v
mysql -v
Для решения ошибки я просто выполнил SQL запрос:
SET GLOBAL innodb_default_row_format='dynamic';
И включил innodb_large_prefix:
SELECT @@innodb_large_prefix;
set global innodb_large_prefix=on;
nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_large_prefix=1
А также на всяких случай изменил кодировку базы данных и всех таблиц на рекомендуемую в официальной документации Zabbix:
SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_general_ci |
+--------------------------+----------------------+
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "zabbix";
ALTER DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;') FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'zabbix';
После этого перезапустил zabbix-server и база данных успешно обновилась:
service zabbix-server restart
Смотрите также другие мои статьи:
Про Zabbix
Про MySQL