Petit retour d'experience.

Les sites ayant été crée à l'origine sous Joomla 1.5 ou -, puis migrés sous Joomla 1.6, 1.7 ou 2.5 peuvent poser un problème lors de la migration vers Joomla 3.1.

 

Il s'agit de sites avec un item de menu utilisant l'ID 23.

 

En effet dans les versions connues à ce jour, j'ai constaté que Joomla voulait absolument créer le lien de menu d'administration de la nouvelle fonctionnalité "Tags" avec l'ID 23.

Il faut donc que cet ID soit libre.

 

Les sites créés sous Joomla 2.5 ne rencontrent pas ce problème, car les ID de lien de menus utilisateurs sont supérieurs à 100.

 

Si vous avez dans la table #_menu un enregistrement avec comme id : 23 :

La migration de Joomla 2.5 en Joomla 3.0 fonctionnera, mais ensuite la migration de Joomla 3.0 en 3.1 posera problème.

La migration de 2.5 en 3.1 posera problème et ne terminera pas.

 

L'erreur est :

JInstaller: :Install: erreur SQL Fonction DB échouée avec le numéro d'erreur 1062
Duplicate entry '23' for key 'PRIMARY' SQL=INSERT INTO '#_menu' ('id', 'menutype', 'title', 'alias', 'note', 'path', 'link', 'type', 'published', 'parent_id', 'level', 'component_id', 'checked_out', 'checked_out_time', 'browserNav', 'access', 'img', 'template_style_id', 'params', 'lft', 'rgt', 'home', 'language', 'client_id') VALUES (23, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '0000-00-00 00:00:00', 0, 1, 'class:tags', 0, '', 45, 46, 0, '', 1);

 

L'upgrade de la base de donnée ne sera pas terminé et elle restera marquée dans la version actuelle de votre installation.

 

Avant tout lancement, il faut donc impérativement :

  • Faire une sauvegarde de tous vos dossiers (par FTP)
  • Faire une sauvegarde de votre base de donnée
  • Vérifier que votre table #_menu ne possède pas une ligne avec comme ID=23.
    • Si c'est le cas, donnez lui un autre id libre, et reporter ce nouvel id dans toute ligne ayant un parent_id à 23.
      Par exemple (a adapter selon votre configuration) :
      UPDATE #_menu SET id = 123 WHERE id=23;
      UPDATE #_menu SET parent_id = 123 WHERE parent_id=23;
  • Puis seulement lancer la procédure de migration vers Joomla 3.1+.