Manual talk:Backing up a wiki/fr

From mediawiki.org
Latest comment: 17 years ago by Xiloynaha in topic Hypothèses

Problème avec les caractères spéciaux[edit]

Bonjour.

Je n'arrive pas à résoudre le problème d'encodage mentionné. J'ai essayé mille façon d'encoder la base de données, avant import, après import, dans tous les sens possibles et imaginable, mais rien n'y fait. Pourtant la solution miracle doit bien exister quelque part ! Je le sais, je l'ai déjà "trouvée" par hasard lors d'une précédente migration, après diverses manipulations dont je n'arrive pas à me souvenir...

Pour info voici les deux sites (MW 1.5.4) : avant migration et après migration. Notez les différences dans les titres des pages contenant des accents, mais par contre tout est normal dans les pages contenant des accents.

Je n'arrive pas à croire que je sois seul dans ce cas, et pourtant je ne trouve aucune solution sur internet. Quelqu'un pour m'aider ? Ou pour m'indiquer où me renseigner, ou à qui m'adresser ?

--Xiloynaha 17:03, 3 November 2006 (UTC)Reply

P.S. : j'en ai profité pour nettoyer cette page de discussion qui ne contenait qu'un brouillon de la page, j'espère que personne ne m'en voudra...


Salut,

Tu as effectivement bien fait de m'envoyer un mail, car je ne suivais plus cette page depuis un moment (maintenant c'est le cas).

Voici à mon avis, les domaines sur lesquels on est susceptible de trouver l'origine du problème:

  • La Base MySQL
  • Le Serveur Apache
  • La sauvegarde
  • La système
MySQL

As-tu un phpMyAdmin qui me permettrais en lecture-seule de consulter les deux base MySQL ? J'insiste sur l'accès en lecture-seule pour qu'il n'y ait aucun mal entendu.

Apache

Peux-tu publier (en dur ou avec un lien) les fichiers de configuration d'Apache (et de PHP) ?

Sauvegarde

Peux-tu donner un lien permettant de récupérer une copie de ta sauvegarde ?

Système

Est-ce sur un même serveur que tu effectue la migration ? Sinon, peux-tu me fournir un compte SSH lambda (avec des droits d'accès de base) pour que je consulte les environnements ?

Bien évidement, tu n'es pas obligé de me fournir des accès. On pourra y arriver sans, mais ça a pourrait accélérer le processus de résolution. Si tu es OK, fourni moi ça uniquement sur mon mail, et surtout pas ici.


Salut Salokine, encore merci de ta réponse.

Je vais répondre point par point.

MySQL
Malheureusement je ne peux pour l'instant pas installer de phpmyadmin sur mon serveur, et le site d'origine étant sur free, je n'ai pas la possibilité de te fournir un accès (il n'y a qu'un seul mot de passe pour tout). Par contre sur mon serveur, je pourrais à la rigueur te donner un accès SSH + MySQL, si tu es à l'aise avec les commandes de mysql-client...
Apache
J'ai mis ça là : fichiers.lm7.fr (note : l'absence du "http:" n'est pas une négligence, c'est pour éviter le référencement ;-)
Sauvegarde
J'ai mis ça là : mouchevii.free.fr/fichiers/vrac/sql/ (Latin-1 et UTF-8, pour faire bonne mesure)
Système
Donc non, ce n'est pas sur un même serveur (origine : free / destination : chez moi). Pour l'accès, on voit ça par courriel (allez, on va dire que je te fais confiance ;-).

--Xiloynaha 19:20, 27 November 2006 (UTC)Reply

P.S. : Je réponds aussi dans les hypothèses...

Hypothèses[edit]

Je te propose ici de partager nos recherches

MySQL[edit]

Ma première idée serait de vérifier le contenu de la base MySQL. Vérifier que l'enregistrement contenant le Titre "Bac_%C3%A0_sable" soit réellement devenu "Bac_%C3%83%C2%A0_sable".

Bon alors effectivement dans la table pagelinks, Bac à sable est devenu Bac_à_sable alors que sur free il apparaît comme Bac_à _sable.
--Xiloynaha


Précision: dans ta procédure de sauvegarde tu indique le passage en encodage latin1. As-tu fait cette manipulation ?

Oui. J'ai essayé d'importer avec les configurations suivantes :
  1. sauvegarde latin1, importation latin1
  2. sauvegarde latin1, importation utf-8
  3. sauvegarde utf-8, importation latin1
  4. sauvegarde utf-8, importation utf-8
Ca ne change rien de rien, ni dans l'apparence du site, ni même dans le contenu de la table pagelinks.
--Xiloynaha

Salokine 22:48, 28 November 2006 (UTC)Reply

Ok, ça doit se passer au niveau de l'import/export

#> locale
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR:fr:en_GB:en
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

Lors de l'import, peux-tu fournir tes locales ?

Je pense avoir trouvé un point intéressant: (Utilise mon login pour être dans le même environnement)

grep "ait un essai..." sauvegardes/mouchevii-iso-8859-1.sql
> INSERT (...) 'Cétait un essai...' (...)
grep "ait un essai..." sauvegardes/mouchevii-utf-8.sql
> INSERT (...) 'Cétait un essai...' (...)

A mon avis la sauvegarde iso est à retenter.


Bon alors mes locales étaient les mêmes que les tiennes. J'ai essayé en me mettant en ISO :

# export LC_ALL=fr_FR
# export LANG=fr_FR
# locale
LANG=fr_FR
LANGUAGE=fr_FR:fr:en_GB:en
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=fr_FR

Et ça ne change rien. :-/

J'ai refait les 2 sauvegardes dans les 2 encodages, rien n'y fait...

Sinon j'ai vu que dans le répertoire /maintenance du wiki, il y a un script convertUtf8.php, mais je ne peux pas installer l'interface ligne de commande de PHP tant que je ne suis pas passé à Apache 2.2, à cause des dépendances... Ca m'apprendra à avoir un serveur en testing ! :-) Je vais faire la mise à jour courant semaine prochaine, j'essayerai ça à ce moment.

--Xiloynaha 19:55, 30 November 2006 (UTC)Reply


  • Forcer le réencodage avec iconv ? :

Cf. http://developpeur.journaldunet.com/tutoriel/sql/051206-sql-convertir-iso88591-utf8.shtml

mysqldump --opt -u root -p domaine_base > domaine_base.sql
iconv -f iso-8859-15 -t utf8 domaine_base.sql > domaine_base-utf8.sql
mysql -u root -p domaine_base.sql < domaine_base-utf8.sql

Dis-moi si ça marche.

Sinon, je pensais aussi à une autre technique plus radicale, mais moins clean .... une fois l'import effectué, réécrase toutes les tables (*.frm ...etc) par la copie des originales.

@+

Salokine 15:41, 3 December 2006 (UTC)Reply


Salut !

Le réencodage ne fonctionne pas. Le problème est bien sûr que toute la base est recodée, ce qui fait que les accents dans les pages sortent mal. Et les accents dans les titres ne ressortent même pas mieux...

Par contre je ne vois pas bien ce que tu veux dire en ce qui concerne la solution "radicale". Quels sont ces *.frm ?

J'ai essayé de supprimer la table fautive (pagelinks), et de la recréer en insérant les données à la main depuis mysqlclient, mais ça ne marche pas non plus. J'ai aussi jeté un oeil aux scripts qui sont dans /maintenance, mais je n'ai rien vu de très intéressant.

Je crois que je vais finir par renommer les pages à la main, on gagnera du temps...

--Xiloynaha 11:50, 7 December 2006 (UTC)Reply


J'ai réussi à migrer un MediaWiki 1.7 avec succès, sans aucun problème, sans même passer par l'encodage latin1... Bref je n'y comprends rien, surtout que le problème précédent dont j'ai parlé était précisément sur du 1.7... Du coup j'ai renommé les pages à la main, parce que ça a assez duré comme ça ! :-)

J'ai fait une sauvegarde de la base après renommage, j'essayerai de la réimporter si j'ai le courage, pour voir ce que ça fait. Je ferai mon retour d'expérience ici.

Salokine, merci beaucoup de m'avoir consacré du temps. Si quelqu'un a la solution, qu'il ne se gêne pas pour m'en faire part...

--Xiloynaha 22:04, 10 December 2006 (UTC)Reply

Apache/PHP[edit]

Il y a un mod_rewrite je crois qui peut influencer les URL, à vérifier.

Je ne pense pas que ça change grand chose. Le problème ne se pose pas au chargement d'une page, ça a vraiment l'air d'être au niveau de la base de données. D'ailleurs je fais allusion plus haut à une précédente résolution du même problème, c'était bien en bidouillant l'encodage des tables que ça avait fini par marcher...
--Xiloynaha


@+ Salokine 10:44, 19 November 2006 (UTC)Reply