Page 1 sur 1

[MYSQL] Pb migration base de données latin1 (résolu)

Publié : dim. 15 mai 2011, 13:46
par Silkmoth
Bonjour,

j'ai un serveur Mysql sur Debian avec une base de donnée en latin1 ( encodage imposée par l'application). Je souhaites faire passer cette base de données sur un serveur Mysql sous Archlinux. Cepandant, après les tests, il semble qu'il y ait un problème d'encodage au niveau des données

Voici la configuration du serveur Debian:

Code : Tout sélectionner

Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	latin1
Conn.  characterset:	latin1
et celle du serveur Archlinux:

Code : Tout sélectionner

Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
J'ai sauvegardé ma base avec la commande suivante:

Code : Tout sélectionner

mysqldump -u root -p --default-character-set=latin1 > bkp.sql
J'ai déplacé ce fichier via scp et tester son encodage avant utilisation (file -i)

Sur le serveur mysql sous Archlinux j'ai créé une base de données avec la commande suivante:

Code : Tout sélectionner

CREATE DATABASE ma_base DEFAULT CHARACTER SET "latin1" COLLATE latin_swedish_ci;
Puis j'ai rentré les données avec la commande:

Code : Tout sélectionner

mysql -u root -p  ma_base --default-character-set=latin1 < bkp.sql
Quand je teste l'affichage des pages web de l'application php, les données issues de la base de données ne s'affichent pas correctement. Par exemple les "é" sont remplacés par des "é".
Dans la balise head, le codage des pages web est en ISO-8859-1. Si je force l'encodage UTF-8 sur mon navigateur, les caractères s'affichent bien.
Donc ma question est comment faire pour que le serveur mysql puisse gérer ma base en IOS-8859-1. Est ce qu'il va falloir que je passe le serveur mysql en latin1 par défaut et si oui qu'elles sont les options dans le my.cnf qui vont me le permettre ?(j'ai regardé sur internet mais pas d'info liés au passage d'un serveur mysql en UTF-8 vers latin1)

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 15:21
par benjarobin
Il faudrait tout d'abord si le problème est au niveau du navigateur web, de php ou de la base de donnée.
Donc vérifie tout d'abord la base de donnée directement (via phpmyadmin par exemple)
Sinon de mémoire il faut spécifier l'encodage utilisé dans le php pour la connexion au serveur mysql (par défaut il met tout en utf-8)
Tu vois que la connexion par défaut pour le Client est en utf8

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 15:45
par Silkmoth
En fait j'ai fait des requêtes via le terminal (qui sont en UTF-8 sous Debian et Archlinux)

Sous Archlinux, je n'ai aucun soucis d'affichage -> donc les données sont en UTF-8

Sous Debian, les caractères accentués sont remplacés par des "�" donc mes données sont bien en latin1

J'ai bon?

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 15:59
par benjarobin
Oui tu as bon, c'est du au faite que mysql passe de latin1 en utf-8 par défaut.
Soit tu modifie ce paramètre que pour la connexion, soit pour toute les connexion via les fichiers de configurations

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 16:04
par FoolEcho
... ou tu conserves ta base en utf8 et tu changes l'encodage de tes fichiers webs, php, etc. en utf-8 (avec iconv -- je suppose que tu n'as que du latin1 partout ? ) plus l'en-tête qui va bien pour tes pages webs.

(je propose ça plutôt que changer l'encodage de la base, car je n'aime pas les modifications à "bas" niveau... c'est au niveau supérieur de s'adapter, donc à l'application qui traite avec ta base de données)

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 16:27
par Silkmoth
Ouais, bon

en gros il n'est pas possible d'avoir une seule base sql en ISO-8859 sous mysql à moins de passer tout le serveur en ISO-8859 ainsi que le php et en plus il faudra qu'après toutes les modifs eventuelles sur les templates de l'appli php que je m'assure que les fichiers et caractères soient toujours en ISO.

Ben tant qu'a faire autant que j'essaie de faire en sorte que l'appli (wikka wikki en l'occurence) gère/ travaille avec l'UTF-8 en lecture et écriture sur la base . J'ai vu sur leur site qu'il y avait moyen de faire ça pour des vielles versions...

Si il n'y a pas d'autres moyens...

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 18:21
par benjarobin
Mais bien sûre que si c'est possible, d'ailleurs je l'explique dès mon premier message, il suffit d'"ouvrir la connexion mysql avec le bon encodage...

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : dim. 15 mai 2011, 23:33
par vgib
Salut,

il faut bien comprendre le fonctionnement de mysql avec php.

MySql correspond avec le programme client en utilisant un encoding interne ( http://dev.mysql.com/doc/refman/5.5/en/ ... ction.html ).

Php utilise l'encoding que lui transfère mysql, et le traduit dans son encoding à lui.
Tu peux toujours utiliser la fonction suivante pour t'en persuader: http://fr.php.net/manual/fr/function.my ... coding.php

Le problème vient du faite que la configuration par défaut des encoding mysql et php sont différentes sur debian et archlinux.

Tout cela se règle dans les options de my.cnf et php.ini

VGib

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Publié : mer. 18 mai 2011, 14:25
par Silkmoth
Mais bien sûre que si c'est possible, d'ailleurs je l'explique dès mon premier message
huum du calme benjarobin, je n'avais pas saisi toute la portée de ta réponse faute de connaissance, après avoir jeté un coup d'oeil aux liens fournis par vgib, je vois ce que tu veux dire.

Dans tous les cas merci pour vos réponses.

(PS j'ai réussi à tout mettre en UTF-8 donc pb résolu)