Mamy stary serwer 5.1 MySQL działający na serwerze 2003. Ostatnio przechodzimy do nowszego środowiska z MySQL 5.6 i serwerem 2008. Teraz na nowym serwerze ciągle dostajemy błędy podczas wstawiania specjalnych znaków, takich jak "Ã".Niepoprawna wartość ciągu: ' xC2 x9Fe 10 ...' dla kolumny
Teraz sprawdziłem kodowanie źródłowe i jest to kodowanie UTF-8. Ale stary serwer Mysql został skonfigurowany jako latin1 (serwer/tabele/colonms) z kolacją latin_swedish_ci i nie otrzymaliśmy żadnych błędów w starym środowisku.
Teraz zrobiłem kilka testów, ponieważ nie żyjemy w nowym środowisku. Próbowałem ustawić wszystkie tabele na tabele/colonms, a także latin1. W obu przypadkach ciągle dostaję te błędy.
Zauważyłem, że na starym serwerze domyślny zestaw znaków serwera to latin1, a na nowym serwerze jego utf-8. Czy to może być problem? Uważam to za bardzo dziwne, ponieważ źródłem jest utf-8.
Czy jest jakaś opcja poradzenia sobie z tym, które można włączyć w starym środowisku? Nie jestem pewien, czy coś takiego istnieje. Porównywałem ustawienia w narzędziu administratora mysql i oprócz domyślnego zestawu znaków wygląda to tak samo.
EDIT:
POKAŻ zmienne jak char '%';
starego serwera:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 | *
| character_set_connection | utf8 | *
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 | *
| character_set_server | latin1 |
| character_set_system | utf8 |
Nowy Serwer:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| 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 |
O ile rozumiem z artykułu nad na utf8mb4 stronie MySQL jest super-zestaw utf8 nie powinno to stanowić problemu dla kodowania Myślę, że ponieważ są one zasadniczo identyczne na kodowaniu, prawda?
Tak, utf8mb4 jest "lepszy" niż utf8. Wciąż jednak trzeba być konsekwentnym w całym MySQL. Jaki jest kontekst "Ã"? Z 'C29Fe'? Mogą tam być dodatkowe wskazówki. (Nadal "Ã" jest poprawny w obu zestawach znaków, a C29F jest (jak sądzę) nieważny w obu.) –