[Résolu] DB MySQL 4.1 vers MySQL 4.0

florentriv

Expert
Bonjour,
Je possède actuellement un forum phpBB installé chez Free. Et je suis en train de démenager vers 1and1 (la super promo de 3 ans).
Et ca me pose un problème : en effet, Free a la version 4.1 de MySQL et 1and1 la 4.0. Et y'a une (grosse) différence : l'histoire des types d'encodage des caractères. D'après ce que j'ai compris, à partir de la version 4.1, ils ont séparés en deux l'encodage (entre charset et collate) qui était avant sur un seul paramètre.

Donc en essayant de créer une table sur 1and1 avec la commande exportée de Free :
CREATE TABLE `phpbb_config` (
`config_name` varchar(255) collate latin1_general_ci NOT NULL default '',
`config_value` varchar(255) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`config_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
J'obtiens :
#1064 - 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 'collate latin1_general_ci NOT NULL default '',
`config_value

J'ai bien compris que MySQL 4.0 n'aime pas les commandes de la 4.1.
Donc j'arrive pas à importer ma base de donnée sur le SQL 1and1. Enfin si, j'ai réussi en exportant sur Free au format "MySQL 4" (dans les options d'exportation), mais alors là, j'ai tous les caractères accentués (é,è,à, ....) qui ne passent plus.

Avez-vous une idée pour que je puisse changer de serveur de base de donnée sans perdre tous mes accents.
Merci beaucoup d'avance :)
Florent
 

Johan_et_Pirlouit

Grand Maître
Lors de l'export, MySQL 4.1 ajoute le paramètre de jeu de caractères (CHARSET), ce que la 4.0 ne connaît pas..

Pour tes caractères, c'est justement un pb de jeu de caractères : tu dois importer en sélectionnant le bon jeu de caractères si le menu d'import te le permet.. Dans ton cas, c'est le Latin-1.. Sinon, exporte ta base 4.1 en jeu de caractères UTF-8, tu auras de fortes chances que l'import des caractères accentués se passe bien dans ton autre base..

C'est comme ça que je fais communiquer différentes bases 4.0 et 4.1 situées sur différents serveurs : mon PC de développement (Latin-1, MySQL 4.1), mon site perso (UTF-8, MySQL 4.0) et le site d'une asso dont je fais partie (Latin-1, MySQL 4.0)..

Petit rappel rapide à propos des jeux de caractères :
- Le Latin-1 ou iso-8859-1 : jeu d'origine pour l'Europe de l'Ouest, codé sur 1 octet (8 bits)
- Le Latin-9 ou iso-8859-15 : jeu actuel de l'Europe de lOuest avec le symbole uro, les Œ + œ précédemment oubliés (si, si, c'est bien vrai !!) et les lettres accentuées des pays de l'Est nouvellement entrés dans l'Union Européenne.. Codé sur un octet.
- L'UTF-8 : jeu de caractères internationnal, codé sur deux octets au moins.

Un début de précisions sur OpenWeb.eu.org (en français) >> ..

:merci:
 

florentriv

Expert
Merci beaucoup pour ces précisions, grace à elle je pense avoir réussi à tout copié sans perdre mes accents :

En fait, lors de l'export, phpmyadmin selectionnait deja par défaut utf-8 (mais avant j'avais pas fait gaffe). Et moi j'avais essayé de mettre la compatibilité MySQL4.0 en exportant les fichiers en gz. Et je pense que c'est le fait de les compresser qui me posait des problèmes, car j'ai refait exactement la meme chose qu'avant (export en utf-8 toujours pas défaut, et compatibilité MySQL4.0 rajoutée) mais en exportant sans compression, c'est à dire qu'il affiche à l'écran les commandes SQL. Puis j'ai copié collé vers le phpmyadmin de destination et ca marche comme il faut.

Donc je te remercie beaucoup, tu m'as bien aidé :)
@ ++
Florent
 

batchy

Grand Maître
ça serait pas six octets au plus ?
 

Johan_et_Pirlouit

Grand Maître

Apparemment pas. En fait, si j'en crois l'article que j'ai posté plus haut, il peut même coder un caractère sur un seul octet..

:merci:
 

grosbin

Nouveau membre
Donc remplacer d'abord tout les interclassements en utf8-bin, exporter pour mysql40 et enfin l'injecter sur 1&1 ? :??:
( je ne parviens pas à trouver ni l'encodage des tables, ni l'encodage des champs sur 1&1, suis déçu .. )
Ca fausse tout sur ce site : ,
je me demande si je dois employer mysql_query("SET NAMES 'UTF8' "); pour chaque insertion, update et select ..
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 060
Membres
1 586 285
Dernier membre
LeFront
Partager cette page
Haut