THE ORB
Uruchamiam studio

Incorrect string value (emoji / kodowanie)

Ktoś miał emoji w nazwie, a twoja baza nie potrafi przechowywać emoji.

groupsTen gracz nie może się zapisaćcodePotrzebny programista

Zrób najpierw to

Twoja baza i jej połączenie muszą używać utf8mb4. To jednorazowa zmiana.

bug_reportWklej zamiast tego całą konsolę

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. 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. 2

    Baza jest w utf8 zamiast utf8mb4

    utf8 w MySQL-u zawsze było częściowym UTF-8. utf8mb4 to to prawdziwe.

  3. 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. 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 Fixer

Dla tego rodzaju błędu Script Optimizer wyłapuje wzorce zapytań, które to powodują.

Błędy, które chodzą z tym w parze