Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] erreur dans DAO sur groupby avec mysql

Posted by fredo59 on 09/26/2017 21:28

Bonjour,

J'avais un appli en 1.6.7.
J'ai mis à jour mon OS et suis passé en php7 et mysql 5.7.19 sur mon PC.

Vu qu'il fallait upgrader jelix pour php7, j'ai installé la version 1.6.15. et j'ai maintenant un DAO qui ne fonctionne plus. J'ai lu sur internet que mysql était plus restructif sur les group_by

methode du DAO qui pose problème :

<method type="select" name="disciplines" groupby="discipline, potence, categorie" distinct="true">
    <order>
        <orderitem property="discipline" way="asc" />
        <orderitem property="categorie" way="asc" />
    </order>
</method>

Erreur générée :
Erreur dans la requête (Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'tir.tir_resultats.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SELECT DISTINCT `tir_resultats`.`id`, `tir_resultats`.`id_membre`, `tir_membres`.`nom`, `tir_membres`.`prenom`, `tir_resultats`.`potence`, `tir_resultats`.`date`, `tir_resultats`.`discipline`, `tir_resultats`.`score`, `tir_resultats`.`id_saison`, `tir_resultats`.`classement`, `tir_resultats`.`categorie`, `tir_resultats`.`date_update`, `tir_resultats`.`login` FROM `tir_resultats` AS `tir_resultats`, `tir_membres` AS `tir_membres` WHERE `tir_resultats`.`id_membre`=`tir_membres`.`id` AND 1=1 GROUP BY `tir_resultats`.`discipline`, `tir_resultats`.`potence`, `tir_resultats`.`categorie` ORDER BY `tir_resultats`.`discipline` asc, `tir_resultats`.`categorie` asc))

Je ne voudrais pas modifier directement sql_mode=only_full_group_by sur ma machine de dev car il est peu probable que je puisse le faire sur mon hébergement (OVH).

Peut-on régler ce problème côté jelix ?
Merci par avance

  [Opened] erreur dans DAO sur groupby avec mysql

Reply #1 Posted by laurentj on 10/24/2017 12:24

Bonjour,

Peux-tu créer un ticket sur le github ? https://github.com/jelix/jelix/issues/new

Edit: je l'ai finalement créé : https://github.com/jelix/jelix/issues/307

J'ai lu sur internet que mysql était plus restructif sur les group_by

Où ça sur internet ? et quels sont ces restrictions ?

Merci pour ce retour de bug.

  [Opened] erreur dans DAO sur groupby avec mysql

Reply #2 Posted by laurentj on 10/24/2017 13:18

J'ai étudier le problème et aux premiers abords, je ne vois pas de solutions réellement envisageables, autre que de ne plus faire appel à ce "groupby". Comme le dit la doc de mysql, le résultat de ce genre de requête n'était de toute façon pas vraiment prévisible, c'est pour cela que ce n'est plus le comportement par défaut.

Je suggère donc de ne plus utiliser ce "groupby" et de faire d'autres types de requêtes.

 
Page
  1. erreur dans DAO sur groupby avec mysql