Áú»¢¶Ä²©

2 Naprawa zestawu znak¨®w i porz?dku sortowania bazy danych Áú»¢¶Ä²©

MySQL/MariaDB

Historycznie MySQL i jego pochodne u?ywa?y 'utf8' jako aliasu dla utf8mb3 - 3-bajtowej implementacji standardu UTF8 stworzonej przez MySQL, kt¨®ra jest 4-bajtowa. Pocz?wszy od MySQL 8.0.28 i MariaDB 10.6.1, zestaw znak¨®w 'utf8mb3' jest przestarza?y i w pewnym momencie jego wsparcie zostanie wycofane, podczas gdy 'utf8' stanie si? odniesieniem do 'utf8mb4'. Od Áú»¢¶Ä²© 6.0, 'utf8mb4' jest wspierane. Aby unikn?? przysz?ych problem¨®w, zaleca si? u?ywanie 'utf8mb4'. Inn? zalet? przej?cia na 'utf8mb4' jest wsparcie dla dodatkowych znak¨®w Unicode.

Poniewa? wersje przed Áú»¢¶Ä²© 6.0 nie obs?uguj? utf8mb4, upewnij si?, ?e najpierw zaktualizujesz serwer Áú»¢¶Ä²© i schemat bazy danych do 6.0.x przed wykonaniem konwersji do utf8mb4.

1. Sprawd? zestaw znak¨®w i porz?dek sortowania bazy danych.

Na przyk?ad:

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

Albo:

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

Jak wida?, zestaw znak¨®w to nie'utf8mb4' i porz?dek sortowania to nie 'utf8mb4_bin', wi?c musimy to naprawi?.

2. Zatrzymaj Áú»¢¶Ä²©.

3. Stw¨®rz kopi? zapasow? bazy danych!

4. Napraw zestaw znak¨®w i porz?dek sortowania na poziomie bazy danych:

alter database <twoja nazwa bazy danych> character set utf8mb4 collate utf8mb4_bin;

Naprawione warto?ci:

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

5. Za?aduj skrypt aby naprawi? zestaw znak¨®w i porz?dek sortowania na poziomie tabel i kolumn:

mysql <twoja nazwa bazy danych> < utf8mb4_convert.sql

6. Wykonaj skrypt:

               SET @ZABBIX_DATABASE = '<twoja nazwa bazy danych>';
       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? bazy danych z naprawion? baz?.

8. Uruchom Áú»¢¶Ä²©.