Re: [TECH] Drupal 7 views_calc comportement différent d'une version à l'autre de MySQL

2012-09-07 Par sujet Benoit LAURENT
Hello Pierre,

Le 7 septembre 2012 16:18, Pierre Varlet  a écrit :

 Bonjour

 Je suis dans un sale pétrin !
 J'ai développé un site en Drupal 7 chez un hébergeur. J'y utilise
 views_calc pour sommer des colonnes de vues. Il marche parfaitement bien.

 Fin Août les temps de réponse n'étant pas satisfaisants et le site devant
 ouvrir à la rentrée, je décide de choisir un autre hébergeur pour le site
 de production (j'ai choisi web4all une assoce qui milite pour le Libre). Je
 transfère le site, vérifie que tout marche. OK.

 Sauf que je n'ai pas vu que les lignes de totaux en bas des vues
 views_calc ne s'affichent plus. et dans le backend il me sort un message
 d'erreur :
 SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP
 columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there
 is no GROUP BY clause

 Les vues étant les mêmes et la structure de la base aussi la seule chose
 qui diffère ce sont les niveaux de logiciel MySQL  d'après phpmyadmin :

 Chez l'hébergeur de mon prototype
 Serveur : Version du serveur: 5.1.49-3-log
 client : mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd5785977229
 **50e490b0d0 $

 Chez web4all:
 Version du logiciel: 5.0.51a-24+lenny5-log - (Debian)
 Version du client de base de données: libmysql - 5.1.63

 Bien entendu l'assistance de web4all dit que c'est un problème Drupal.
 Aucune aide de ce côté. J'ai posté aussi un billet dans le forum de Drupal
 France, personne n'a d'idée.

 J'ai bien une piste :
 As far as why this worked locally, but not on your live server;
 MySql doesn't require complete listing of non-aggregate columns in the
 GROUP BY clause by default, but your live server probably has the
 ONLY_FULL_GROUP_BY  option turned on.


A priori il s'agit seulement d'une erreur de syntaxe,  le problème n'est
pas si grave. Il faut aller dans le code du module virer le group by qui
pose probleme.
Sais tu sur quelle requete ca plante ? Logs 


 On peut la tourner ON via phpmyadmin :
 SET sql_mode = 'ONLY_FULL_GROUP_BY';
 Mais c'est la tourner OFF qu'il faudrait faire. Et je n'ai pas trouvé
 comment on fait. Si quelqu'un sait... Merci

 J'ai aussi vu que le groupe Drupal est au courant (on parle de Drupa 8, de
 patches...), mais je n'ai pas vu de solution proposée, mais ai-je bien
 regardé ?

 Bref si quelqu'un a une idée qui me permettrait de sortir de ce truc je
 lui vouerai une reconnaissance éternelle !

 Librement
 Pierre


Benoit




%%% Merci de respecter ces consignes http://www.linux-azur.org/savoir-vivre %%%










Re: [TECH] Drupal 7 views_calc comportement différent d'une version à l'autre de MySQL

2012-09-07 Par sujet Pierre Varlet

Le 07/09/2012 16:57, Benoit LAURENT a écrit :

Hello Pierre,

Le 7 septembre 2012 16:18, Pierre Varlet  a écrit :

Bonjour

Je suis dans un sale pétrin !
J'ai développé un site en Drupal 7 chez un hébergeur. J'y utilise
views_calc pour sommer des colonnes de vues. Il marche parfaitement
bien.

Fin Août les temps de réponse n'étant pas satisfaisants et le site
devant ouvrir à la rentrée, je décide de choisir un autre hébergeur
pour le site de production (j'ai choisi web4all une assoce qui
milite pour le Libre). Je transfère le site, vérifie que tout
marche. OK.

Sauf que je n'ai pas vu que les lignes de totaux en bas des vues
views_calc ne s'affichent plus. et dans le backend il me sort un
message d'erreur :
SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of
GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is
illegal if there is no GROUP BY clause

Les vues étant les mêmes et la structure de la base aussi la seule
chose qui diffère ce sont les niveaux de logiciel MySQL  d'après
phpmyadmin :

Chez l'hébergeur de mon prototype
Serveur : Version du serveur: 5.1.49-3-log
client : mysqlnd 5.0.8-dev - 20102224 - $Id:
65fe78e70ce53d27a6cd5785977229__50e490b0d0 $

Chez web4all:
Version du logiciel: 5.0.51a-24+lenny5-log - (Debian)
Version du client de base de données: libmysql - 5.1.63

Bien entendu l'assistance de web4all dit que c'est un problème
Drupal. Aucune aide de ce côté. J'ai posté aussi un billet dans le
forum de Drupal France, personne n'a d'idée.

J'ai bien une piste :
As far as why this worked locally, but not on your live server;
MySql doesn't require complete listing of non-aggregate columns in
the GROUP BY clause by default, but your live server probably has the
ONLY_FULL_GROUP_BY  option turned on.


A priori il s'agit seulement d'une erreur de syntaxe,  le problème n'est
pas si grave. Il faut aller dans le code du module virer le group by qui
pose probleme.
Sais tu sur quelle requete ca plante ? Logs 


On peut la tourner ON via phpmyadmin :
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Mais c'est la tourner OFF qu'il faudrait faire. Et je n'ai pas
trouvé comment on fait. Si quelqu'un sait... Merci

J'ai aussi vu que le groupe Drupal est au courant (on parle de Drupa
8, de patches...), mais je n'ai pas vu de solution proposée, mais
ai-je bien regardé ?

Bref si quelqu'un a une idée qui me permettrait de sortir de ce truc
je lui vouerai une reconnaissance éternelle !

Librement
Pierre


Benoit





Merci Benoît

En fait ça ne plante pas ! Heureusement à l'exécution il n'y a pas de 
message d'erreur. Simplement le module ne fait pas le job : il ne 
construit pas et n'affiche pas la ligne des totaux.


Le message d'erreur apparait quant on travaille sur la vue au début de 
la section où est affiché la requête générée et l'aperçu du résultat 
qu'on est supposé avoir à l'exécution.


Et pourquoi il ferait une erreur de syntaxe dans un environnement et pas 
dans l'autre ?


Sais-tu comment avec phpmysql mettre OFF ce  ONLY_FULL_GROUP_BY

Et sais-tu s'il y a moyen de modifier une requête générée par Drupal 
(dangereux certes mais s'il y manque quelque chose et qu'on sait quoi ça 
se tente, de nuit après une sauvegarde !)


Cordialement
Pierre

%%% Merci de respecter ces consignes http://www.linux-azur.org/savoir-vivre %%%