web-dev-qa-db-fra.com

Mise à jour du 2.5.28 au 3.5.1 puis au 3.6 sur PHP 5.6 tout fonctionne sauf la mise à jour joomla ou le correctif de base de données qui cause ces erreurs

cliquer sur le bouton de mise à jour de joomla à l’arrière-plan donne cette erreur:

1054 Colonne inconnue 'a.extra_query' dans la 'liste de champs'

SQL =

SELECT DISTINCT a.update_site_id, a.type, a.location, a.last_check_timestamp, a.extra_query`
FROM `#__update_sites` AS `a`
INNER JOIN #__update_sites_extensions AS b ON a.update_site_id = b.update_site_id
WHERE a.enabled = 1 AND b.extension_id = 700

cliquer pour corriger les 28 erreurs listées sur le bouton de la base de données entraîne cette erreur:

1054 Colonne inconnue 'title_alias' dans '#__content'

SQL =

ALTER TABLE `#__content`
CHANGE `title_alias` `title_alias` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '';
2
Marc Reynolds

Vous avez un état de base de données incohérent.

Joomla! essaie d'exécuter les instructions dans

administrator/components/com_admin/sql/updates/mysql/3.0.0.sql 

conçus pour mettre à jour la structure de votre base de données de la version 2.5.28 à la version 3.0.0, et il essaie de supprimer une colonne qui n’y figure pas: très probablement, le script a déjà été exécuté et ne s’est pas terminé pour une raison quelconque.

Vous pouvez essayer de comprendre ce qui ne va pas avec les erreurs de journal/installation, mais vous devez quand même réparer la structure de votre base de données manuellement. C'est très douloureux, cela prend des heures et toute erreur humaine pourrait compromettre le résultat.

Le moyen rapide et facile: modifiez le script pour ajouter une tolérance d'erreur.

Avertissement: alors que je l'ai déjà fait précédemment, ce n'est pas une méthode officiellement approuvée et est par nature dangereux. Faites d’abord une sauvegarde de la base de données, et conservez-la jusqu’à ce que tout soit vérifié comme prévu.

Le mot-clé SQL IGNORE. Aussi simple que cela. Éditez votre fichier 3.0.0.sql

  1. insérer IGNORE comme suit:

    • ALTER TABLE => ALTER IGNORE TABLE
    • UPDATE => UPDATE IGNORE
    • INSERT => INSERT IGNORE
  2. en fonction du contenu actuel de votre base de données, vous pouvez trouver des doublons que vous pouvez supprimer en toute sécurité à la fin des tableaux suivants:

    • #__extensions _ (les templates isis, protostar, beez3 peuvent être dupliqués)
    • #__template_styles _ (les styles pour les templates isis, protostar, beez3 peuvent être dupliqués)

Bonne chance! En cas d'échec, vérifiez les nouvelles erreurs que vous obtenez et commentez ici, nous pourrions avoir besoin de résoudre d'autres problèmes.

3
Riccardo Zorn