Ошибка [1118] Row size too large при обновлени Zabbix

Thank you for reading this post, don't forget to subscribe!

При обнов­ле­нии Zabbix мож­но встре­тить такую ошиб­ку [Z3005] query failed: [1118] Row size too large. Она воз­ни­ка­ет в про­цес­се обнов­ле­ния базы данных

Для нача­ла вот при­мер ошиб­ки из лога:

[Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs …

Если Вы тоже полу­чи­ли такое сооб­ще­ние при обнов­ле­нии Zabbix, попро­буй­те отклю­чить режим innodb strict в MySQL..

Если Вы тоже полу­чи­ли такое сооб­ще­ние при обнов­ле­нии Zabbix, попро­буй­те отклю­чить режим innodb strict в MySQL..

a) Отключаем innodb strict режим:

# mysql -uroot -p zabbix -e "set global innodb_strict_mode='OFF';"

После вво­да коман­ды вве­ди­те пароль поль­зо­ва­те­ля root от MySQL.

b) Перезапустите службу Zabbix срвера:

# systemctl restart zabbix-server

Про­верь­те что база Zabbix успеш­но обно­ви­лась в жур­на­ле событий

саt /var/log/zabbix-server/zabbix_server.log | grep database

Путь к фай­лу лога Zabbix сер­ве­ра может отли­чать­ся в зави­си­мо­сти от дис­три­бу­ти­ва Linux.
Если обнов­ле­ние про­изо­шло, то идем дальше.

c) Включаем innodb strick режим обратно:

mysql -uroot -p zabbix -e "set global innodb_strict_mode='ON';"
После вво­да коман­ды вве­ди­те пароль поль­зо­ва­те­ля root от MySQL.

Такая же про­бле­ма может воз­ник­нуть и со служ­бой zabbix-proxy. Реше­ние аналогичное.

Альтернативные решения

Еще про­бле­ма может быть свя­за­на с непра­виль­ной коди­ров­кой базы дан­ных (долж­на быть utf8 + utf8_bin). Как про­ве­рить и исправить?
1. Сде­лай­те бэкап БД!
2. Про­верть­те теку­щую кодировку

SELECT @@character_set_database, @@collation_database;

3. Скон­вер­ти­руй­те в нуж­ную, если отличается

alter database zabbix character set utf8 collate utf8_bin;

4. Обно­ви­те Zabbix сервер.