THE ORB
Iniciando o studio

Valor de string incorreto: '\xF0\x9F...' para a coluna

Alguém tinha um emoji no nome e o seu banco não consegue guardar emojis.

groupsAquele jogador não consegue salvarcodePrecisa de um desenvolvedor

Faça isto primeiro

O seu banco e a conexão dele precisam usar utf8mb4. É uma mudança de uma vez só.

bug_reportMelhor colar o console inteiro

O que significa

Foi escrito um caractere que o conjunto de caracteres da coluna não consegue representar. A sequência de bytes da mensagem que começa com \xF0\x9F é um emoji: quatro bytes, e o velho utf8 do MySQL é uma codificação de três bytes que não consegue guardá-los.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    Um emoji no nome de um jogador ou numa mensagem de chat

    A forma mais comum, de longe. Os nomes do Discord e da Steam estão cheios deles.

  2. 2

    O banco de dados é utf8 e não utf8mb4

    O utf8 do MySQL sempre foi um UTF-8 parcial. utf8mb4 é o de verdade.

  3. 3

    O conjunto de caracteres da conexão não está definido

    A tabela pode estar em utf8mb4 e a CONEXÃO continuar em utf8, e falha do mesmo jeito. Essa é a que passa despercebida para todo mundo.

  4. 4

    Texto acentuado ou CJK numa coluna latin1

    Um esquema mais velho que nunca foi migrado.

Como saber qual é o seu

SHOW VARIABLES LIKE 'character_set_%';
SHOW FULL COLUMNS FROM users;

Se a coluna diz utf8mb4 mas a conexão diz utf8, o problema é a string de conexão.

Onde olhar

A string de conexão no server.cfg, e o conjunto de caracteres da tabela.

Como consertar

Coloque os dois. Primeiro a conexão, que é a metade esquecida:

set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"

E depois o esquema:

ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Script Optimizer detecta os padrões de consulta que causam isso.

Erros que andam junto com este