z myślą o migracji nan nowy serwer VPS postanowiłem dobrze przygotować się i przeprowadzić parę testów odnośnie wydajności i poprawności działania mojego projektu (http://matma4u.pl)
Moje środowisko testowe to:
- system Debian 8
- Apache 2.4.10
- PHP 5.6.9
- MySQL MariaDB 10.0
Poprzenosiłam pliki, nadałem odpowiednie uprawnienia i ruszyłem z testami. Wszystko, no prawie wszystko dobrze działa prócz bazy danych. - zamiast polskich znaków mam na stronie dziwne krzaczki.
Baza oparta jest o silnik InnoDB. Po wgraniu je na serwer testowy przejrzałem kilka rekordów, czy wszystkie polskie znaki wyświetla poprawnie. W bazie wygląda to ok.
Kodowanie bazy - UTF-8
Metoda porównywania znaków - utf8_general_ci
Nie mam pomysłu czemu tak jest. Postanowiłem dokładnie porównać bazę live z bazą testową, ale są identyczne. Zapytania odnośnie struktury w obu bazach zwracają te same wyniki
SHOW VARIABLES LIKE 'collation%'
collation_connection utf8mb4_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
SHOW GLOBAL VARIABLES LIKE 'collation%'
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
SHOW VARIABLES LIKE 'character_set%';
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
SHOW GLOBAL VARIABLES LIKE 'character_set%'
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Na serwerze produkcyjnym działa wszystko ok, na testowy już nie. Gdzie tkwi błąd?
W pliku konfiguracyjnym /etc/mysql/conf.d/mariadb.cnf mam ustawione poprawne wpisy:
Kod
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8
collation-server = utf8_general_ci
character_set_server = utf8
collation_server = utf8_general_ci
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8
collation-server = utf8_general_ci
character_set_server = utf8
collation_server = utf8_general_ci
Kodowanie strony również jest w UTF-8.
Pewnie gdzieś jest drobny błąd, ale gdzie?
Proszę o pomoc w jego lokalizacji.