Ouvrir Workbench et sélectionner Data Export pour sauvegarder la BD dans 2 Self-contained files :
Fichier Structures : avec les options Dump Structure Only + Dump Stored Procdures + Dump Triggers
Ouvrir le fichier de sauvegarde et remplacer les DEFINER obsolètes dans les structures de l ancienne BD :
root@\127.0.0.1\\
par root@\localhost\\
::1\\
par root@\localhost\\
%\\
par root@\localhost\\
"NO\_AUTO\_CREATE\_USER" par ""
Fichiers Data : avec les options Dump Data Only
.
.
avec les privilèges DBA :
.
.
cd \"\\Program Files\\MySQL\\MySQL Server 8.0\\bin\"
mysqlcheck -u root -p --all-databases
.
MySQL 8.0 utilise par défaut le jeu de caractères utf8mb4 (un utf8 codé sur 4 octets). Nous allons convertir nos bases de données codées en utf vers utf8mb4.
Copy the following code into a file called it preAlterTables.sql:
use information_schema;
SELECT concat(\"ALTER DATABASE `\",table_schema,\"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;\") as sql
FROM `TABLES` where table_schema like \"yourDbName\" group by table_schema;
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name,\"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\") as sql
FROM `TABLES` where table_schema like \"yourDbName\" group by table_schema, table_name;
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name, \"` CHANGE `\",column_name,\"` `\",column_name,\"` \",data_type,\"(\",character_maximum_length,\") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\",IF(is_nullable=\"YES\",\" NULL\",\" NOT NULL\"),\";\") as sql
FROM `COLUMNS` where table_schema like \"yourDbName\" and data_type in ( varchar","char");
SELECT concat(\"ALTER TABLE `\",table_schema,\"`.`\",table_name, \"` CHANGE `\",column_name,\"` `\",column_name,\"` \",data_type,\" CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\",IF(is_nullable=\"YES\",\" NULL\",\" NOT NULL\"),\";\") as _sql
FROM `COLUMNS` where table_schema like \"yourDbName\" and data_type in ("text","tinytext","mediumtext","longtext");
Replace all occurences of \"yourDbName\" with the database you want to convert. Then run:
cd \"C:\\Program Files\\MySQL\\MySQL Server 5.7\\bin\"
mysql -uroot -p < preAlterTables.sql | egrep "^ALTER" > alterTables.sql
This will generate a new file alterTables.sql, with all the queries you need to convert the database. Run the following command to start the conversion:
mysql -uroot -p < alterTables.sql
.
La mise à niveau de MySQL étant terminée, vous pouvez désinstaller l ancienne version MySQL 5.7 à l aide MySQL Installer.
Publié le : 14-04-2020 - 19:00