Valor de cadena incorrecto: '\xF0\x9F...' para la columna
Alguien tenía un emoji en el nombre y tu base de datos no puede guardar emojis.
Haz esto primero
Tu base de datos y su conexión tienen que usar utf8mb4. Es un cambio de una sola vez.
Qué significa
Se escribió un carácter que el juego de caracteres de la columna no puede representar. La secuencia de bytes del mensaje que empieza por \xF0\x9F es un emoji: cuatro bytes, y el viejo utf8 de MySQL es una codificación de tres bytes que no los puede guardar.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Un emoji en el nombre de un jugador o en un mensaje de chat
La forma más común de lejos. Los nombres de Discord y de Steam están llenos.
- 2
La base de datos es utf8 y no utf8mb4
El
utf8de MySQL siempre fue un UTF-8 parcial.utf8mb4es el de verdad. - 3
El juego de caracteres de la conexión no está puesto
La tabla puede estar en utf8mb4 y la CONEXIÓN seguir en utf8, y falla igual. Esta es la que se le pasa a todo el mundo.
- 4
Texto acentuado o CJK en una columna latin1
Un esquema más viejo que nunca se migró.
Cómo saber cuál es el tuyo
SHOW VARIABLES LIKE 'character_set_%'; SHOW FULL COLUMNS FROM users;
Si la columna dice utf8mb4 pero la conexión dice utf8, el problema es la cadena de conexión.
Dónde mirar
La cadena de conexión en server.cfg, y el juego de caracteres de la tabla.
Cómo arreglarlo
Poné los dos. Primero la conexión, que es la mitad que se olvida:
set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"
Y después el esquema:
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer detecta los patrones de consulta que causan esto.