Jump to content
Invision Board France
  • 0
Sign in to follow this  
kosmos1999

4.1 [3.4 -> 4.X] erreur conversion utf-8 durant la migration

Question

kosmos1999

Bonjour à tous,

Suite à un problème avec mon hébergeur et l'impossibilité de faire la migration sur mon hébergement, j'ai téléchargé l'intégralité de mon forum et ma base pour recréer l'environnement sur un serveur local. J'ai remis le site dans son état d'origine, j'ai viré tous les hooks, tous les plugins, j'ai repassé le site en anglais... J'ai ensuite suivi le tuto pour la migration et tout se passe bien jusqu'à la conversion en uft-8

image.png.c3d3a323e0a526db0515f48652f8b406.png

 

image.png.84a1044ee3ca24a81111ee3634b156ee.png

 

image.png.ee7d5457618681689cd6e4876f21ab7d.png

 

image.png.98ae904cd579c1ed9e9d8a917bc6a27a.png

Ma base :

image.png.5f97808c486a7a12dd89995adf7dbd99.png

 

Mais certaines colonnes sont en utf8_general_ci ou utf8_unicode_ci ou utf8mb4_unicode_ci

 

Avez-vous une idée de comment convertir ma base ou de quel problème vient cette erreur de longueur maximale (je rappelle que je suis sur un serveur local, donc si je dois modifier des paramètres serveurs, je peux).

 

Merci d'avance de votre aide.

 

 

 

 

 

image.png

image.png

Edited by kosmos1999

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0
cybero

Bonjour :)

 

la base de données c'est pas trop mon truc mais quelques sujets sur IPS et Google m'orientent vers:

 

Quelle version de Mysql utilises-tu ? La version 5.7.x pourrait corriger le soucis

Autre piste: Convertir les tables au format InnoDB et retester

 

Ou si trop long... tout supprimer, passer la commande suivante afin que les nouvelles tables soient par défaut en InnoDB.

Puis relancer ton import, tout devrait être en InnoDB par défaut si j'ai bien compris

 

Citation

Cause
There is a known bug with MySQL related to MyISAM, the UTF8 character set and indexes that you can check here.

Resolution

Make sure MySQL is configured with the InnoDB storage engine.
Change the storage engine used by default so that new tables will always be created appropriately:


set GLOBAL storage_engine='InnoDb';

For MySQL 5.6 and later, use the following:
mysql> SET GLOBAL default_storage_engine = 'InnoDB';

 

 

 

Source: https://confluence.atlassian.com/fishkb/mysql-database-migration-fails-with-specified-key-was-too-long-max-key-length-is-1000-bytes-298978735.html

 

Je ne suis convaincu mais ça se tente... bon courage !

Share this post


Link to post
Share on other sites
  • 0
kosmos1999
Il y a 15 heures, cybero a dit :

Quelle version de Mysql utilises-tu ? La version 5.7.x pourrait corriger le soucis

 

Je suis en 5.7.26

 

Pour le reste, je ne suis pas sûr de savoir le faire.

Tu parles d'effacer la base actuelle, créer une nouvelle en InnoDB et réimporter ma sauvegarde sans créer les tables ?

Share this post


Link to post
Share on other sites
  • 0
cybero

Raté pour la version alors mince.

 

Pour le second point, c'était au lieu de faire les tables une par une, tout refaire.

Tu as bien un backup complet hein ? :)

 

Donc option 1 : Modifier les tables au format MyISAM une par une pour les convertir en InnoDB

Un poil fastidieux  mais ça se fait...

ALTER TABLE xxxxx ENGINE=InnoDB;
ALTER TABLE yyyyy ENGINE=InnoDB;
...

C'est aussi possible via l'interface de phpMyAdmin par exemple, sur une table, onglet Opérations

image.png.876ca7e05e67fd4aae9f034071708993.png

 

 

OU Option 2

Passer la commande suivante qui va dire à MySQL "créé moi les tables en InnoDB"

mysql> SET GLOBAL default_storage_engine = 'InnoDB';

 

Puis refaire un import (Dans une autre base par exemple, ou en supprimant l'existante)

De cette façon tout sera recréé en InnoDB (Sauf contre indication dans ton fichier d'import)

Share this post


Link to post
Share on other sites
  • 0
kosmos1999

Bonjour,

Merci beaucoup pour ton aide.

J'ai pu écrire un script avec excel (copier/coller des noms de toutes les tables + copier/coller de ton script) :)

J'ai dû faire une modif dans une cellule spécifique d'une table (cal_events) qui avait un format foireux et qui bloquait et finalement la conversion s'est terminée sans encombres.

 

image.png.cc56c0516f4ef262334e5b872cd309be.png

 

MAIS... 🙄

 

Quand j'ai lancé l'upgrade, au bout de quelques minutes, de nouveau bloqué par une erreur (je n'ai pas fait de copie d'écran, j'ai essayé de revenir en arrière et ça a tout planté)

Je suis en train de recharger la sauvegarde de ma base et je vais relancer la conversion et l'upgrade. J'ouvrirai un autre post car cette erreur est "résolue".

Merci encore.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.