| Nous sommes très heureux d'annoncer la collaboration du Colibri et du Papillon!
|
Ekopedia:Solution:Problème majeur sur la base de donnée SQL francophone
Un article de Ekopedia, l'encyclopédie pratique.
Cette page vise à expliquer comment résoudre notre problème de charset sur la base de donnée francophone Ekopedia (logiciel Mediawiki).
Sommaire |
Attention
Notre solution a peut de chance de pouvoir être utilisée tel-quel, mais elle peut insprirer d'autres solutions à des problèmes similaires.
Notre problème
En 2004 ou 2005, j'ai fait un très très mauvais choix durant une mise à jour: $wgDBmysql5 = true; (documenté comme: Experimental charset support for MySQL 4.1/5.0).
Les symptômes
- Si nous éditions une page et ajoutions un caractère comme "φ", durant la sauvegarde, il y avait une conversion qui, de manière transparente, transformait (corrompt) le caractère en un point d'interrogation (?).
- Il était possible de détecter le problème lorsqu'on ajoutait certaines extensions (comme TeX). Message d'erreur: "Illegal mix of collations".
Notre solution
Un sympathisant du projet Ekopedia (Szabolcs Pap) a fait un script pour convertir la base de donnée dans le bon charset.
Voici le script:
#!/bin/sh TEMP_DIR=/tmp/ DB_NAME=ekopediafr DB_USER=ekopedia DB_PASS=XXXXXXXXXXX echo "start..."; echo "dumping database (fr)\n" mysqldump $DB_NAME --default-character-set=utf8 -u $DB_USER -p$DB_PASS > $TEMP_DIR/allnew.sql echo "dump is ready\n"; echo "create first sed to change UTF8\n"; sed -i 's/\/\*\!40101 SET NAMES utf8 \*\/\;/\/\*\!40101 SET NAMES latin1 \*\/\;/g' $TEMP_DIR/allnew.sql echo "create second sed to change UTF8\n"; sed -i 's/SET character_set_client = utf8;/SET character_set_client = latin1;/g' $TEMP_DIR/allnew.sql echo "importing into new database\n"; cat $TEMP_DIR/allnew.sql|mysql $DB_NAME --default-character-set=latin1 -u $DB_USER -p$DB_PASS echo "DONE\n";
Après l'avoir appliqué, je fus en mesure de passer la variable "$wgDBmysql5" à "false" dans LocalSettings.php.
Notre problème est maintenant réglé!
Commentaire
J'espère que cette page pourra aider quelqu'un. --jluc 20 avril 2009 à 21:41 (EDT)

