Ceci est mon premier message. J’utilise Jeedom DYI depuis plus de 7 ans maintenant. Ma configuration était en mode Debug (dans common.config.php). Jeedom est installé sur un RPI 4 / debian 10.
Depuis la mise à jour en 4.4.7, j’ai constaté un nombre important d’erreurs dans http.error rendant jeedom inutilisable :
[Sun Jun 16 16:39:11.103792 2024] [php7:error] [pid 3136] [client 127.0.0.1:43212] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error in /mnt/ssd2/jeedom/core/class/DB.class.php:96\nStack trace:\n#0 /mnt/ssd2/jeedom/core/class/DB.class.php(96): PDOStatement->fetch(2)
(…)
En désactivant le mode DEBUG, ces erreurs ont disparus. Cela semble venir de la nouvelle définition des options dans la class DB en ligne 42: « PDO::ATTR_ERRMODE => (DEBUG ? PDO::ERRMODE_EXCEPTION : PDO::ERRMODE_SILENT) », et tous (?) les appels à la DB sont concernés.
Est-ce que ces erreurs sont dues à ma version vieillissante de Debian, ou d’autres personnes ont-elles le même problème en mode Debug?
Le problème reste le même avec tous les plugin désactivés
→ Une erreur SQL intervient lors de la sauvegarde après modification des objets dans le menu Outils, Objet, Vue d’ensemble.
Le problème est toujours présent lors d’un passage (éclair) en alpha 4.4.8
Le problème était aussi présent en 4.4.6, mais PDO::ATTR_ERRMODE était en mode SILENT. En changeant ce paramètre (ajout de PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION dans la fonction initConnection de la class DB), l’erreur apparait de nouveau.
Bonjour,
Il ne faut pas faire tourner un jeedom en mode debug, la ce que tu as c’est pas vraiment des erreurs mais du debug justement fait pour deboguer jeedom en cas de soucis (perso meme moi j’ai jamais activé le mode debug).
Merci pour la réponse. Après analyse plus fine, je crois savoir d’où vient ce problème : la commande fetch est executée même pour des requêtes SQL qui ne renvoient pas de données (du type UPDATE, DELETE …). Il faudrait peut être modifier la méthode Prepare de la class DB pour qu’elle n’appelle pas fetch pour ces requêtes. Par exemple en utilisant le paramètre _fetchType.
Après je ne sais pas quel est l’impact sur les performances du SGDB de cet appel (inutile) à fetch.
En attendant, je désactive le mode Debug.