Passage de mysql 4.0 vers 4.1 et à fortiori vers 5.0
Bonjour,
Mon serveur est encore sous sarge, et passera bientot en etch.
Debian etch utilise mysql 5, et à partir de mysql 4.1,
l'encodage dans mysql est en utf8.
J'utilise actuellement la version 4.0.24-10sarge2 de mysql-server.
J'ai lu qu'il faut apparemment passer en mysql 4.1 avant de passer en 5.
Voici les étapes que j'ai lu sur un tuto de gentoo:
1 - Création d'une copie des données:
# mysqldump \
-uroot \
--password='mot_de_passe' \
-hlocalhost \
--all-databases \
--opt \
--allow-keywords \
--flush-logs \
--hex-blob \
--master-data \
--max_allowed_packet=16M \
--quote-names \
--result-file=BACKUP_MYSQL_4.0.SQL
Apparemment, il faut prendre toutes les bases y compris la base "mysql",
qui doit être aussi convertie en utf8.
2 - Supprimer ces données:
# tar cjpvf ~/mysql.$(date +%F"T"%H-%M).tar.bz2 /etc/mysql/my.cnf
/var/lib/mysql/
# ls -l ~/mysql.*
# rm -rf /var/lib/mysql/ /var/log/mysql
3 - Installer la 4.1
4 - Conversion du dump sql d'iso en utf8
(De latin1 vers l'utf8)
$ iconv -f ISO-8859-15 -t UTF-8 file1.sql > file2.sql
5 - Reimporter les données:
# cat BACKUP_MYSQL_4.0.SQL \
| mysql \
-uroot \
--password='mot_de_passe' \
-hlocalhost \
--max_allowed_packet=16M
# mysql_fix_privilege_tables \
--defaults-file=/etc/mysql/my.cnf \
--user=root \
--password='mot_de_passe'
Par contre au tout début de l'étape 5, ils disent:
"Des fonctionnalités plus anciennes de mysqldump peuvent exporter les
tables dans un mauvais ordre si des clefs étrangères sont impliquées.
Pour contourner ce problème, ajouter à la requête SQL les reports suivants :
Exemple de code 4.5 : Réparation du contrôle des clefs étrangères
SET FOREIGN_KEY_CHECKS=0
SET FOREIGN_KEY_CHECKS=1"
Est-ce que vous avez fait cela aussi et si oui, ca se rajoute où
exactement, je ne comprends pas trop?
Quelqu'un a t'il déjà donc essayé tout cela en me confirmant que ca
amrche nikel?
Apparemment, le plus gros du boulot serait fait en passsant de 4.0 en 4.1.
Sinon de 4.1 vers 5.0, on aurait plus grand chose à faire vu qu'on est
déjà en utf8 ou bien sinon peut-être juste le
"mysql_fix_privilege_tables" pour fixer les permisssions?
Merci :-)
Reply to: