[comment]: # ({609a8e9d-609a8e9d})
# 2 Naprawa zestawu znaków i porównywania napisów bazy danych Zabbix

[comment]: # ({/609a8e9d-609a8e9d})

[comment]: # ({fd2a288b-25eef83a})
#### MySQL/MariaDB

Historycznie MySQL i jego pochodne używały „utf8” jako aliasu dla utf8mb3 — własnej 3-bajtowej implementacji standardu UTF8 w MySQL, który jest 4-bajtowy.
Począwszy od MySQL 8.0.28 i MariaDB 10.6.1, zestaw znaków „utf8mb3” jest
przestarzały i w pewnym momencie jego obsługa zostanie usunięta, podczas gdy „utf8”
stanie się odniesieniem do „utf8mb4”.
Od Zabbix 6.0 obsługiwany jest „utf8mb4”. Aby uniknąć problemów w przyszłości,
zdecydowanie zaleca się używanie „utf8mb4”.
Kolejną zaletą przejścia na „utf8mb4” jest obsługa dodatkowych znaków Unicode.

::: notewarning
Ponieważ wersje wcześniejsze niż Zabbix 6.0 nie obsługują utf8mb4, przed wykonaniem konwersji do utf8mb4 należy najpierw zaktualizować 
serwer Zabbix i schemat bazy danych do wersji 6.0.x lub nowszej.
:::

**1.** Sprawdź zestaw znaków i porównywanie bazy danych.

Na przykład:

    mysql> SELECT @@character_set_database, @@collation_database;
    +--------------------------+----------------------+
    | @@character_set_database | @@collation_database |
    +--------------------------+----------------------+
    | latin2                   | latin2 _general_ci   |
    +--------------------------+----------------------+

Lub:

    mysql> SELECT @@character_set_database, @@collation_database;
    +--------------------------+----------------------+
    | @@character_set_database | @@collation_database |
    +--------------------------+----------------------+
    | utf8                     | utf8_bin             |
    +--------------------------+----------------------+

Jak widać, zestaw znaków nie jest tutaj ustawiony na „utf8mb4”, a porównywanie nie jest ustawione na
„utf8mb4\_bin”, więc należy to poprawić.

**2.** Zatrzymaj Zabbix.

**3.** Utwórz kopię zapasową bazy danych!

**4.** Popraw zestaw znaków i porównywanie na poziomie bazy danych:

    alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;

Poprawione wartości:

    mysql> SELECT @@character_set_database, @@collation_database;
    +--------------------------+----------------------+
    | @@character_set_database | @@collation_database |
    +--------------------------+----------------------+
    | utf8mb4                  | utf8mb4_bin          |
    +--------------------------+----------------------+ 

**5.** Załaduj
[skrypt](../../../../assets/en/manual/appendix/install/utf8mb4_convert.sql)
w celu poprawienia zestawu znaków i porównywania na poziomie tabel i kolumn:

    mysql <your DB name> < utf8mb4_convert.sql

**6.** Wykonaj skrypt:

                   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;

Należy pamiętać, że „utf8mb4” może zużywać nieco więcej miejsca na dysku.

**7.** Jeśli nie wystąpiły błędy, możesz utworzyć kopię zapasową
poprawionej bazy danych.

**8.** Uruchom Zabbix.

[comment]: # ({/fd2a288b-25eef83a})
