[spip-dev] S'agit il d'un bug ? Modification d'un article erreur mysql liée à l'utilisation d'accents (caractéres spéciaux)

Ma version de spip : 2.0.9 [14357]

version: PHP Version 5.2.0-8+etch13, Apache/2.2.3 (Debian), mysql 5.0.32

La modification d'un article provoque une erreur mysql (1193) lorsque des accents ou caractéres spéciaux sont utilisés dans le corps (texte) ou le titre d'un article, d'une rubrique.

Cette erreur empêche la mise à jour du champ concerné (texte ou titre) dans la table spip_articles par exemple.

- un nouvel article avec titre et texte sans accent est validé et inséré en base sans soucis, dans tous les cas (rédigé en une fois et validé une fois).

- un nouvel article avec titre avec accent et sans texte est validé et inséré en base

- une modification partielle du titre avec accent de cet article ne passe pas, que les caractéres ajoutés en fin de titre soient avec accent ou pas.

- une modification intégrale du titre passe avec ou sans accent

La création d’un nouvel article avec titre avec accent fonctionne.

Si un titre contient un ou des caractéres accentués, une modification partielle ne fonctionne pas mais une modification intégrale du titre passe que l’on y intégre des caractéres accentués ou pas.

Il semble donc que ce soit la modification qui ne fonctionne pas : pas de probleme avec insert, mais peut être un problème avec un update quelque part.

Il y a également une erreur 1146 qui survient lors de la mise à jour d’un titre d’article ou d’un titre d’article syndiqué contenant un ou plusieurs caractères accentués.

le nom de la table est tronqué, il manque le dernier caractére, uniquement pour les articles syndiqués avec des accents dans le titre :

Erreur mysql 1146 Table ’nom_de_la_base.spip_syndic_articl’ doesn’t exist

dans spip.log lors de la mise à jour d’un site syndiqué.

Si l’on supprime la syndication, pour la remettre en fonction ensuite cela fonctionne. pas d’erreur. Il semble donc n’y avoir aucun problème pour la création. Le problème survient uniquement lors d’un update.

La requête est :

UPDATE `nom_de_la_base`.spip_syndic_articl SET titre=’titrearticle avec accentuation’,lesauteurs=’xxx,yyy’,descriptif=’’,lang=’fr-fr’,source=’’,url_source=’’,tags=’’ WHERE id_syndic_article=18

Cette erreur survient également lors de la modification du titre d’un article avec accent.

Peut on me donner quelques pistes ?

Cordialement,

Eric

Bonjour,

En lisant votre mail, on peut voir que vous modifiez un article syndiqué… Utilisez-vous un plugin pour cela? Genre :
http://www.spip-contrib.net/Plugin-Flux-RSS-en-articles

Bonjour,

J'ai poursuivi les investigations :

1 - sur le site d'origine, qui présentait le bug
2 - sur une nouvelle construction SPIP 2.0.9 (même serveur, même version apache ... que lors du signalement ci-dessous.

2 - installation d'un nouveau SPIP 2.0.9 sur serveur identique :
a - upload des fichiers spip. source : site spip (re-téléchargement).
b - installation avec creation de base automatique : KO : les erreurs sont les même que ci-dessous (signalement bug)
c - suppression du fichier config + creation d'une base vierge (encodage UTF-8) : : KO : les erreurs sont les même que ci-dessous (signalement bug)

1 - j'ai cherché à localiser la fonction qui retournait la commande SQL corrompue.

Voici ce que donne les logs lors de la modification d'un article (édition) avec accents j'ai ajouté des spip_log():

Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : fonction_editer_article_dist /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : Include SPIP modifier fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : Fin Include SPIP modifier fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT revision article fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) variables : type : article id : 21 options: Array c: Array serveur:
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT fonction_modifier_contenu /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT include filtres /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : fin include filtres /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : DEBUT commit modif /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) variables commit : table : spip_articles champs : Array
Oct 13 19:46:35 82.245.236.32 (pid 26596) Erreur mysql 1064
Oct 13 19:46:35 82.245.236.32 (pid 26596) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET texte='yle Majuscule de Dunkerque se veut être \"la référence\" sur le
' at line 2 -
UPDATE
SET texte='yle Majuscule de Dunkerque se veut être \"la référence\" sur le
Dunkerquois de la librairie papeterie générale et toute son équipe (13
personnes) professionnels passionnés en sont persuadés
à Majuscule Dunkerque vous pouvez évidemment avoir le choix entre 75 000
idées particulières mais vous pouvez commander ou réclamer tout ce que
vous souhaitez, notre devise demandez nous vous l\'obtiendrons
alors n\'hésitez plus , venez nous rencontrer et comparez
p demey
y',date_modif='2009-10-13 19:46:35'
WHERE id_article=21
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : FIN commit modif /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : FIN fonction_modifier_contenu /ecrire/inc/modifier.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : FIN revision article fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) Edition article : FIN fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:46:35 82.245.236.32 (pid 26596) redirige 302: http://www.majuscule-demey.net/ecrire/?exec=articles&id_article=21

Lorsqu'il n'y a pas d'accents :

Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : fonction_editer_article_dist /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : Include SPIP modifier fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : Fin Include SPIP modifier fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT revision article fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) variables : type : article id : 21 options: Array c: Array serveur:
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT fonction_modifier_contenu /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT include filtres /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : fin include filtres /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : DEBUT commit modif /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) variables commit : table : spip_articles champs : Array
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : FIN commit modif /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : FIN fonction_modifier_contenu /ecrire/inc/modifier.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : FIN revision article fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) Edition article : FIN fonction_articles_set /ecrire/action/editer_article.php
Oct 13 19:48:30 82.245.236.32 (pid 26741) redirige 302: http://www.majuscule-demey.net/ecrire/?exec=articles&id_article=21

Il semble donc qu'il y est un soucis du côté des filtres ...

Peux t-on m'indiquer quelques pistes. Ne pas tenir compte de la partie texte presente ci-dessus. J'ai changé l'encodage base pour test, les utilisateurs pendant ce temps là continuer à essayer d'entrer des articles malgré le signalement du soucis.

Cordialement,

Eric

Eric Longuemare - Opalesurfcasting.net a écrit :

Bonjour,

Un nouvel essai nouvelle base, nouveau SPIP:

modification du charset installation dans /ecrire/inc/utils.php

// Le charset par defaut lors de l'installation
    define('_DEFAULT_CHARSET', 'latin1');

Idem ci dessous

Eric Longuemare - Opalesurfcasting.net a écrit :

re-bonsoir,

Quelque soit la config, le probleme est toujours le même, la requête est mal formattée, tronquée dès que l'on insére des accents dans le texte.

Log mysql

Une requete correcte, texte sans accent.

8 Query UPDATE `spip2_retest1`.spip_articles
SET texte='aaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

',date_modif='2009-10-14 17:19:41'
WHERE id_article=2

Une requête incorrecte, texte avec accent :

13 Query UPDATE s
SET texte='aaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaa

éééééééééééééééééé

',date_modif='2009-10-14 17:19:50'

Je poursuis.

Eric Longuemare - Opalesurfcasting.net a écrit :