Incorrect string value (emoji / kodowanie)
Ktoś miał emoji w nazwie, a twoja baza nie potrafi przechowywać emoji.
Zrób najpierw to
Twoja baza i jej połączenie muszą używać utf8mb4. To jednorazowa zmiana.
Co to znaczy
Zapisano znak, którego zestaw znaków kolumny nie potrafi przedstawić. Sekwencja bajtów w komunikacie zaczynająca się od \xF0\x9F to emoji: cztery bajty, a stary utf8 MySQL-a jest kodowaniem trzybajtowym i nie potrafi ich pomieścić.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Emoji w nicku gracza albo w wiadomości na czacie
Zdecydowanie najczęstsza postać. Nazwy z Discorda i ze Steama są ich pełne.
- 2
Baza jest w utf8 zamiast utf8mb4
utf8w MySQL-u zawsze było częściowym UTF-8.utf8mb4to to prawdziwe. - 3
Zestaw znaków połączenia nie jest ustawiony
Tabela może być w utf8mb4, a POŁĄCZENIE nadal w utf8, i wywala się tak samo. To ta rzecz, którą ludzie przeoczają.
- 4
Tekst z akcentami albo CJK w kolumnie latin1
Starszy schemat, którego nigdy nie zmigrowano.
Jak poznać, który jest twój
SHOW VARIABLES LIKE 'character_set_%'; SHOW FULL COLUMNS FROM users;
Jeśli kolumna mówi utf8mb4, a połączenie mówi utf8, problemem jest connection string.
Gdzie szukać
Connection string w server.cfg i zestaw znaków tabeli.
Jak to naprawić
Ustaw oba. Najpierw połączenie, bo to ta połowa, o której się zapomina:
set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"
Potem schemat:
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Wciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Script Optimizer wyłapuje wzorce zapytań, które to powodują.