THE ORB
Démarrage du studio

Valeur de chaîne incorrecte : « \xF0\x9F... » pour la colonne

Quelqu'un avait un emoji dans son nom et votre base ne peut pas stocker les emojis.

groupsCe joueur ne peut pas sauvegardercodeIl faut un développeur

Faites d'abord ceci

Votre base et sa connexion doivent utiliser utf8mb4. C'est un changement à faire une seule fois.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

Un caractère a été écrit que le jeu de caractères de la colonne ne peut pas représenter. La séquence d'octets du message qui commence par \xF0\x9F est un emoji : quatre octets, alors que le vieux utf8 de MySQL est un encodage sur trois octets qui ne peut pas les stocker.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    Un emoji dans un nom de joueur ou un message de chat

    La forme la plus courante, de loin. Les noms Discord et Steam en sont pleins.

  2. 2

    La base est en utf8 et non en utf8mb4

    L'utf8 de MySQL a toujours été un UTF-8 partiel. utf8mb4 est le vrai.

  3. 3

    Le jeu de caractères de la connexion n'est pas défini

    La table peut être en utf8mb4 et la CONNEXION rester en utf8, et cela échoue pareil. C'est celle que tout le monde rate.

  4. 4

    Du texte accentué ou CJK dans une colonne latin1

    Un schéma plus ancien qui n'a jamais été migré.

Comment savoir laquelle est la vôtre

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

Si la colonne annonce utf8mb4 mais la connexion utf8, le problème est la chaîne de connexion.

Où regarder

La chaîne de connexion dans server.cfg, et le jeu de caractères de la table.

Comment la corriger

Réglez les deux. La connexion d'abord, car c'est la moitié qu'on oublie :

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

Puis le schéma :

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

Toujours bloqué sur votre propre code ?

Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.

bug_reportOuvrir le Server Fixer

Pour ce type d'erreur, le Script Optimizer repère les motifs de requête à l'origine de ceci.

Les erreurs qui voyagent avec celle-ci