1. Проверьте набор символов базы данных и сопоставление.
Например:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_general_ci |
+--------------------------+----------------------+
Как мы видим, набор символов здесь - это не utf8, а сопоставление - не utf8_bin, поэтому нам нужно их исправить.
2. Остановите Zabbix.
3. Создайте резервную копию базы данных!
4. Исправьте набор символов и сопоставление на уровне базы данных:
Исправленные значения:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
5. Загрузите скрипт, чтобы исправить набор символов и сопоставление на уровне таблицы и столбца:
6. Выполните скрипт:
SET @ZABBIX_DATABASE = '<your DB name>';
If MariaDB → set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
If MariaDB → set innodb_strict_mode = ON;
drop procedure zbx_convert_utf8;
Обратите внимание, что кодировка данных на диске будет изменена. Например, при преобразовании таких символов, как Æ, Ñ, Ö из latin1 в utf8, они перейдут с 1 байта на 2 байта. Таким образом, для исправленной базы данных может потребоваться больше места, чем раньше.
7. Если ошибок нет - вы можете создать резервную копию базы данных с фиксированной базой.
8. Запустите Zabbix.