web-dev-qa-db-fra.com

Anciennes mises à jour SQL en cours d'exécution sur la mise à jour

Je construis un composant personnalisé et lors de l'installation initiale sur Joomla 3.3.6, il s'installe correctement. Cependant, lorsque je réinstalle, plutôt que d'exécuter la mise à jour SQL uniquement à partir de la version actuelle +, il exécute apparemment TOUS les fichiers de mise à jour SQL dès le début.

Dans la table jos_extensions, Le composant manifest_cache De mon composant indique la version à "version":"3.3.2" - this devrait signifie que seuls les fichiers de mise à jour de SQL 3.3.2+ doivent exécuter la mise à niveau. Cependant, chaque mise à jour est en cours d'exécution.

Quelqu'un peut-il penser à une raison pour laquelle cela se produit? Merci pour toutes les idées.

2
user101289

Comme je n'ai aucune réputation;) un commentaire:

  • Vous devez vérifier la table xyz_schemas pour la dernière version de la mise à jour SQL. Avec l'extension no.
  • Utilisez-vous method = "upgrade" dans le manifeste xml?
  • Un problème plus courant est que les mises à jour SQL sont pas exécutées si une version initiale (vide) de la mise à jour SQL manquait lors de l'installation.
1
schnuti

Joomla suit les versions du schéma pour lui-même et les composants dans le #__schemas table. Il énumère les extension_id et avec le version_id et l’utilise pour déterminer les mises à jour à exécuter. Par exemple, vous verrez des entrées similaires à ceci:

700    3.3.6-2014-09-30
709    1.2.0

Comme vous pouvez le deviner à partir des lignes supérieures à 700, le id d’une extension appelée files_joomla c'est-à-dire Joomla.

Vous pouvez en savoir plus à ce sujet dans l'article de Joomla Doc " Gestion des mises à jour des composants (Mettre à jour les fichiers SQL) " (qui indique 2.5 mais je ne pense pas que cela ait changé depuis).

La plupart des gens manquent cette note dans l'article:

Remarque importante: Ces fichiers permettent également de définir le numéro de version dans la table #__schemas. Ce numéro de version doit figurer dans la version actuelle du composant pour que les nouveaux fichiers SQL puissent être exécutés lors de la mise à jour. Par exemple, si vous possédez la version 1.0 et que vous effectuez une mise à jour vers la version 1.1, le fichier 1.1.sql ne sera pas exécuté s'il n'y avait pas de fichier 1.0.sql dans la version 1.0. Pour cette raison, il est recommandé d’avoir un fichier de mise à jour SQL pour chaque version, même s’il n’ya aucune modification SQL dans cette version. Vous pouvez simplement utiliser un fichier vide ou un fichier avec une ligne de commentaire.

1
Craig