Bug SQL quand le message contient des caractères spéciaux

Ah bon?
Ben moi j’ai des tables avec d’autres type (des tables de plugins tiers, mais aussi de jeedom). Parfois c’est unicode, parfois general…

Et dans les tables jeedom, au niveau des colonnes, c’est hétérogene aussi (comment). Donc je voulais pas faire de conneries…

Fais comme tu veux, tu m’a tagué je t’ai donnée une réponse et ce qu’il faut mettre après a toi de voir ce que tu fais. Je ne peux pas te fournir plus d’élément que ce que j’ai deja fait pour t’aider.

Et je t’en remercie.
Je veux juste comparer avec une base vierge, pour pas faire de conneries. Parce que pour moi, ca n’est pas aussi simple. Les colonnes ne vont pas changer de type si tu changes juste celui de la table. Je n’ai donc pas le choix que de vérifier table par table.
Pourrais-tu me donner l’url du zip de la derniere stable stp? et après, je me débrouille.
Quand j’essaye https://github.com/jeedom/core/archive/4.3.14.zip ca ne marche pas.

Merci pour ton temps

Merci Loic, effectivement ça parait ok via adminer

après un bon backup tu peux tenter :rofl: (peut etre couper jeedom pour éviter les couacs?)

https://mathiasbynens.be/notes/mysql-utf8mb4

sinon ils expliquent pas à pas, mais je connais pas ton niveau

EDIT: Tags · jeedom/core · GitHub ici @fwehrle

Merci pour l’article qui confirme bien ce que je pense : il faut modifier le type de la base, de chaque table, et de chaque colonnes qui était précedement en utf8. Et prendre en compte general ou unicode.
Bref, faire du cas par cas. Ce que je vais faire.

Merci! :smiley:

Salut,
Je veux bien un retour de tes modifications car je pense que je vais devoir faire la même chose que toi.

1 « J'aime »

Avec plaisir (j’imagine bien que si la modification du core date de 2020, je dois pas être le seul dans ce cas).
ATTENTION par contre, je n’ai aucun recul sur les potentiels effets de bords de ces modifications (il peut y en avoir sur les tailles des champs et des index apparemment).

Après analyse, seule la connexion a été passée en utf8mb4_unicode_ci, et du coup, la DB, les tables et les champs créées lors de l’installation récupère cette collation.
Pour le changement au niveau de la DB, mon user jeedom n’a pas les droits de le faire via une requête ALTER DATABASE. Je l’ai donc fait au niveau de l’interface d’adminer :
image
Ensuite, il suffit de faire un ALTER TABLE sur chaque table en utf8_unicode_ci qu’on voudrait passer en utf8mb4_unicode_ci. Bonne nouvelle : si c’est fait via une requete, les champs sont modifiés aussi. (Contrairement à si on le fait via l’interface d’adminer etonnement).

Dans mon cas, j’ai listé ces tables :
ATTENTION : il y a des tables spécifiques à certains plugins, que je n’ai pas listé ici.

ALTER TABLE cmd CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE config CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE cron CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dataStore CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE eqLogic CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE eqReal CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE history CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE historyArch CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE interactDef CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE interactQuery CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE listener CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE message CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE note CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `object` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE plan CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE plan3d CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE plan3dHeader CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE planHeader CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE scenario CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE scenarioElement CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE scenarioExpression CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE scenarioSubElement CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `update` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `user` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE view CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE viewData CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE viewZone CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE widgets CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE timeline CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE cache CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Note : la table historyArch peut être un peu longue a convertir :wink:
Et évidemment, pensez à faire un backup avant, on ne sait jamais.

1 « J'aime »

Merci pour ces explications.

Ce qui expliquerait que je sois déjà en utf8mb4 via la modification de 2020.

Donc à passer en utf8mb4_unicode_ci depuis adminer.

Si j’ai bien compris, tu préconises de passer par Jeedom via le champ "Commande SQL" pour passer les commandes "ALTER TABLE".

Ah ben tiens, toi tu es en general, alors que la connexion est en unicode. Bizarre…

Attention : je ne précaunise rien moi. J’indique juste ce que j’ai constaté.
Si tu ne sais pas comment executer une requete SQL avec adminer, je te conseille fortement de te documenter.
Sur ma version (la derniere), j’ai un bouton « Requete SQL » tout en haut a gauche. Ne pas oublier de selectionner la base. Et dans ton cas, de modifier ma requete pour mettre tes tables en utf8mb4_unicode_ci

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.