Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Pascale Lambert,
Nombre de réponses : 7

Bonjour,

Je rencontre l'erreur citée en objet lorsque je veux créer un nouvel utilisateur.

Le config.php contient

'dbcollation' => 'utf8mb4_unicode_ci',

La BDD est en interclassement utf8mb4_unicode_ci aussi, la table user est en utf8_general-ci

Mais d'où sort ce 'utf8mb4_bin' ?

J'ai trouvé de nombreux fils relatant des problèmes similaires (en anglais... :/), qui suggèrent de modifier le fichier mysql_collation.php. Je vois bien dans ce fichier le texte d'erreur qui me bloque à la ligne 119, mais ça ne me plait guère d'aller modifier des lignes de code (je ne suis pas sûre de moi #fear)

Bref : l'hébergeur (o2switch) me dit que c'est au webmestre de régler ça (merci, c'est moi !! ^^) et je ne comprends pas pq, vu que le config.php et l'interclassement correspondent bien, tout ne fonctionne pas normalement.

Une idée pour m'expliquer et me dépanner de façon simple ?

Merci d'avance,


Moyenne des évaluations  -
En réponse à Pascale Lambert

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Bruno Malaval,
Avatar Moodleurs particulièrement utiles
Bonjour,

L'interclassement va définir l'encodage des caractères, et permettre ou non l'affichage de certains caractères / emojis selon la valeur choisie.
Depuis Moodle 3.3, l'interclassement recommandé est "utf8mb'_unicode_ci"

D'après votre message, la base de données est en "utf8mb4_unicode_ci", mais la table user est en "utf8_general_ci" .. 1ère différence.
De plus, même si vous changez l'interclassement d'une table, à l'intérieur de celle-ci l’interclassement de chaque colonne peut être différent.

Page de documentation sur ce point : https://docs.moodle.org/3x/fr/Support_unicode_complet_pour_MySQL
Avec un lien en bas de page vers une discussion en français sur le sujet.

Le mieux serait de reprendre l'ensemble et mettre à plat tous les interclassements.

Le problème survient lors de la création d'un utilisateur, peut-être avec des caractères spéciaux quelque part dans le nom / prénom / ...
Est-ce-que vous pouvez créer un utilisateur avec des caractères simples (sans accents ni caractères spéciaux) ?

J'avais eu des problèmes similaires il y a qq années,, certainement dus à des mises à jour et config successives.
J'avais extrait tout le schéma de la base et remis à plat tous les interclassements ... amusant .. 🤔

Bruno
Moyenne des évaluations Utile (3)
En réponse à Bruno Malaval

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Pascale Lambert,
Bonjour Bruno,

Merci de votre réponse sourire

Au niveau des caractères spéciaux, en l’occurrence, c'est le @ de l'adresse mail qui ne passe pas. Ça va être dur de s'en passer ;)

Les scripts en ligne de commande, je n'ai jamais fait cela. Et quand je lis qu'il faut avoir qq connaissances en MySQL (mes miennes sont plus minces qu'une feuille de cigarette) ou installer un plugin d'administration de MySQL. Bouh, je ne me sens pas bien du tout là...

Est-ce que cela pourrait être dans les attributions de mon hébergeur de faire ce genre de manip ?

Bonne soirée,
Pascale
En réponse à Pascale Lambert

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Pascale Lambert,
En attendant, de guerre lasse, j'ai changé le fichier config.php pour remettre utf8_general_ci.
J'ai un message d'alerte dans "environnement" mais au moins je peux inscrire des utilisateurs ou modifier leur profil. Et le reste n'a pas l'air de mal fonctionner (si je perds juste des emoji, ce n'est pas bien grave).
En réponse à Pascale Lambert

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs
Bonsoir

Etant aussi sur O2, j'a ieu ce cas et j'ai procédé ainsi :
  • aller dans la gestion CPanel
  • aller dans phpMyAdmin
  • choisir la bdd du moodle à modifier
  • cliquer sur "opérations"
  • tout en bas choisir l'interclassement "utf8mb4_unicode_ci"
  • choisir les 2 coches
Et vérifier que l'opération se passe sur toutes les tables

J'ai dû le faire pour la page 1 PUIS pour la page 2 clin d’œil




Moyenne des évaluations Utile (3)
En réponse à Luiggi Sansonetti

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles
Bonjour,
Je confirme la procédure indiquée par Luiggi.
C'est exactement celle que j'utilise.
Il ne faut pas oublier de cocher les deux coches.
Puis corriger le config.php
En réponse à Daniel Méthot

Re: Erreur : 'utf8mb4_bin' is not valid for character set 'utf-8'

par Pascale Lambert,
Bonjour,

Ok, merci beaucoup. Procédure un peu plus simple que de lancer des scripts en ligne de commande ;D
Là je devrais y arriver normalement...

Bonne journée sourire