Comme ma question précédente posée hier n'a pas eu de succès (zéro réponse), je repose mon problème de façon plus précise :
Je veux transférer mes bases MySQL (version 3.23) depuis mon serveur Linux A vers mon serveur Linux B (sur lequel j'ai MySQL version 4.1).
- J'ai listé toutes les bases du serveur A et je les ai crées sur le serveur B.
- J'ai fait un mysqldump de chaque base du serveur A :
for i in `cat lstbases.txt`
do
mysqldump -u monuser -pmonmdp $i > /Repertoire/Export-$i.sql
done
et j'ai transféré tous ces fichiers sur le serveur B
- Sur le serveur B, j'ai exécuté tous ces sql :
for i in `cat lstbases.txt`
do
mysql -u monuser -pmonmdp $i < /Repertoire/Export-$i.sql
done
Dans l'ensemble, tout se passe plutôt bien, sauf quelque bases dont l'import me renvoie des messages d'erreurs de syntaxe SQL, dus généralement à des noms de champs acceptés par MySQL 3.23 et refusés par MySQL 4.1 :
par exemple, un champ nommé "table" ou "key" ; en les préfixant par exemple du nom de la table (ex. "log_table") et en relançant la requête, ça passe.
Le problème après est que les scripts PHP correspondants ne sont plus en phase, et qu'il faudrait les corriger... Autre exemple, des champs portant comme nom des chiffres ("6", "5", etc...).
Indépendamment de ce problème de syntaxe, ma démarche est-elle valable ?
Il reste aussi à régler le problème éventuel des charsets. Je crois qu'il y a un bin's où il est question des caractères de code UTF-8, et qu'il y a une moulinette qui permet de traiter ça. Quelqu'un peut-il m'en dire plus ?
Encore merci.
R.
Partager