IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Desactiver ONLY_FULL_GROUP_BY mysql


Sujet :

Administration MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 37
    Points : 20
    Points
    20
    Par défaut Desactiver ONLY_FULL_GROUP_BY mysql
    Bonjour à tous,
    je viens d'acheter un script de chat avec webcam, que j'essaye de faire fonctionner sur un serveur dédié OVh sous Release 2.
    Le site fonctionne sauf une page qui est supposait afficher les membres en ligne.
    Voici l'erreur:

    A Database Error Occurred

    Error Number: 1140

    Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `performers`.`nickname`, `performers_videos`.*, count(distinct(performers_videos.video_id)) as total FROM `performers_videos` INNER JOIN `performers` ON `performers`.`id`=`performers_videos`.`performer_id` WHERE (SELECT COUNT(performer_id) FROM `banned_countries` WHERE `banned_countries`.`performer_id` = `performers_videos`.`performer_id` AND `banned_countries`.`country_code` = 'FR') = 0
    Les techs du script me demandent de passer en mysql 5.5, actuellement je suis en 5.0.44. Pour le moment étant difficile de mettre à jour mysql sur la release 2 d'ovh, je me demandais s'il était plus simplement possible de désactiver le ONLY_FULL_GROUP_BY mode ?

    merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Quelle horreur cette requête ! Celui qui a pondu ce script devrait apprendre le SQL !

    Elle est censée faire quoi cette requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    C'est une page qui doit afficher les membres en lignes ...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Pour avoir les options actuelles :
    Puis tu fais (Sans le ONLY_FULL_GROUP_BY):

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    merci pour vos réponse
    j'ai décidé de réinstaller un debian tout neuf avec les paquets nécessaires.
    Je mettrai mysql 5.5

    Merci encore

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je ne vois pas de condition dans la requête qui détermine si un membre est en ligne ou pas ! Ce n'est probablement pas la seule requête du script qui génère la page.

    À moins que ce soit le fait qu'il figure dans la table "performers_videos" ?

    D'ailleurs, on nomme de préférence les tables au singulier mais c'est un autre débat.

    Apparemment, cette requête compte le nombre de vidéos de chaque performer et donne la liste de ces vidéos. Par contre, je ne comprends pas l'utilité du WHERE. D'après le nom de la table, il semble s'agir d'exclure du résultat les membres bannis ? Pourquoi limiter à la France ? Et il faudrait plutôt une condition NOT EXISTS que ce comptage en sous-requête corrélée qui va très vite plomber les ressources et augmenter le temps de réponse.

    La partie qui pose problème et qui cause ce message d'erreur, c'est `performers_videos`.* dans le SELECT. Au passage, il vaut mieux éviter la guerre des étoiles !

    Donc si j'ai bien compris le sens de la requête, ça devrait plutôt être ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT tmp.nickname, tmp.total,
    	pv1. -- les colonne nécessaires et pas étoile !
    FROM performers_videos pv1
    INNER JOIN
    (
    	SELECT p.id, p.nickname,
    		COUNT(DISTINCT pv.video_id) AS total
    	FROM performers_videos pv
    	INNER JOIN performers p ON p.id = pv.performer_id
    	WHERE NOT EXISTS
    	(
    		SELECT 1
    		FROM banned_countries b
    		WHERE b.performer_id = pv.performer_id
    			AND b.country_code = 'FR'
    	)
    	GROUP BY p.id, p.nickname
    ) tmp
    	ON tmp.id = pv1.performer_id
    La sous requête compte les vidéo des performers qui n'existent pas dans la table banned_countries pour la France et la requête principale récupère les autres colonnes de la table performers_videos pour ces performers.


    Pour répondre à votre question initiale, c'est une bonne chose que ce paramètre soit actif car ça permet de détecter les requêtes foireuses de ce genre et qui peuvent donner des résultats faux si ce filtre n'est pas activé.

    J'espère que vous n'avez pas payé trop cher votre script et que le reste n'est pas aussi pourri que cette requête !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Kylix] Kylix attaque Mysql ?
    Par nahmsath dans le forum EDI
    Réponses: 9
    Dernier message: 12/08/2002, 19h37
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo