Anomalie #1299
ferméIncompatibilité avec zend-db > 2.9.2
100%
Description
Suite à une mise à jour, je constate que Galette n'est pas compatible avec des versions plus récentes de zend-db que celle qui distribuée avec (2.9.2). Ceci se manifeste au moins à deux endroits.
L'ajout de nouvelles valeur par défaut de préférence échoue systématiquement, ce qui se traduit dans les logs par des messages du type, que l'on retrouve pour chaque requête:Unable to add missing preferences.Statement could not be executed (HY093 - - )
Ensuite, la modification de champs dynamiques échoue également, avec un message d'erreur de ce type:An error occurred storing dynamic field. Form name: adh | Error was: Statement could not be executed (HY093 - - )
Ces deux problèmes disparaissent lorsque zend-db est retrogradé à la version 2.9.2. Ils réapparaissent dès le passage aux versions 2.9.3 ou 2.10.0.
Le premier problème correspond à un échec systématique de l'appel à $stmt->execute(), à la ligne 219 de Galette\Core\Preferences, sans que les logs de mariadb ne montrent trace d'une quelconque requêtes INSERT. En examinant le changelog de zend-db 2.9.3, ce changement de la gestion des paramètres semble le coupable idéal: https://github.com/zendframework/zend-db/pull/304
Mis à jour par Johan Cwiklinski il y a environ 5 ans
- Priorité changé de Normal à Bas
Il ne s'agit pas vraiment d'un bug ; il est impossible de savoir quels changements incompatibles les bibliothèques tierces vont implémenter. Ce sera à prendre en compte lors d'une future mise à jour des bibliothèqes.
Mis à jour par Guillaume Rousse il y a environ 5 ans
Et en cherchant à résoudre le problème moi-même, je suis tombé sur:
https://github.com/zendframework/zend-db/issues/322
Bref, a part surenchérir sur le sujet, je vois mal quoi faire :/
Mis à jour par Johan Cwiklinski il y a plus de 4 ans
- Statut changé de Nouveau à In Progress
Je pense avoir trouvé ce qui cloche (testé dans les préférences pour le moment, mais je suppose que c'est valable partout).
J'ai relancé le ticket Laminas (https://github.com/laminas/laminas-db/issues/47#issuecomment-625024194).
Mis à jour par Johan Cwiklinski il y a plus de 4 ans
J'ai commencé à contourner le problème, mais ça revient à utiliser des paramètres positionnés partout, ou à utiliser leurs alias +/- prévisibles... Je ne sais pas trop quoi faire : dans un cas comme dans l'autre, c'est plein de modifications à pas mal d'endroits pour... pas grand chose :/
Voir https://github.com/galette/galette/compare/feature/upatelibs
Mis à jour par Johan Cwiklinski il y a plus de 4 ans
PR proposée : https://github.com/laminas/laminas-db/pull/160 - en attente de retours.
Je commence à désespérer d'avoir une réponse.
Mis à jour par Johan Cwiklinski il y a environ 4 ans
- Bloque Evolution #1492: PHP 8 compatibility ajouté
Mis à jour par Johan Cwiklinski il y a environ 4 ans
- Catégorie mis à Core
- Assigné à mis à Johan Cwiklinski
- Version cible mis à 0.9.5
Toujours pas de nouvelles côté upstream, malgré mes relances.
Je vais donc intégrer un patch dans Galette directement ; mais les modifications de la PR d'origine sont trop importantes pour que ce soit maintenable à terme.
J'ai bossé sur une version simplifiée qui devrait convenir à Galette, et être relativement aisée à maintenir au besoin.
Je laisse le soin au projet Laminas de corriger leurs bogues ; je ne souhaite pas renouveler l'expérience d'une contribution à leur endroit, ni même mener à terme ce qui a été débuté.
Mis à jour par Johan Cwiklinski il y a environ 4 ans
- Statut changé de In Progress à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 039d7c608766d42461b0bb5705421e6a5f75b1c6.