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

Installation MySQL Discussion :

Requete qui fait planter le serveur.


Sujet :

Installation MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut Requete qui fait planter le serveur.
    Bonsoir,
    J'ai migré mon serveur MySQL de la version 4.0.14-nt en 5.0.37-community-nt.

    Tout fonctionne visiblement bien sauf une application qui envoie une requete SQL à mon serveur qui le fait planter. Ca me prend 100% des ressources et ca ne s'arrete plus tant que je ne tue pas le processus. Je ne sais vraiment pas à quoi ca peut être du et je suis vraiment embeté. La requete qui fait planter le serveur semble relativement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct A.id_papier,A.id_type from bobine AS A,papier as B where A.id_papier=B.papier and A.id_type=B.type and A.id_client='64' and A.laize='44' and A.grammage LIKE '60' order by B.id_papier
    Elle execute une jointure entre deux tables qui ont la structure suivante :
    -papier :
    id_papier int(11) NO PRI NULL auto_increment
    papier int(11) NO 0
    type int(11) NO 0
    cache int(11) NO 0
    -bobine:
    id_operation int(2) unsigned NO PRI NULL auto_increment
    date date NO 0000-00-00
    grammage float NO 0
    laize varchar(7) NO 0
    id_papier int(1) NO 0
    es int(11) NO 0
    id_type int(11) NO 0
    id_client int(4) NO 0
    poid int(11) NO 0
    tirage int(11) NO 0
    poid2 int(11) NO 0
    id_pagination int(11) NO 0
    cah int(11) NO 0
    commentaire blob NO
    dossier int(6) NO 0
    titre blob NO
    cache int(11) NO 0
    flagdebord int(11) NO 0
    color int(11) NO 0
    note blob NO
    pagination text NO
    poid_special int(11) NO 0
    Y aurait il un problème lié à la différence de version et à ma requete? Peut-etre y a t-il une mise à jour à faire sur les fichiers qui contiennent les tables pour les rendre compatible avec la version 5? (Surprenant dans la mesure ou tous les autres programmes fonctionnes sans souci) La requete me semble vraiment normale.

    Merci de votre aide.
    ________________________________________
    Evitez les pavés de codes! C'est dur et chiant à lire!
    Pensez aux clostro!

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 902
    Points : 6 026
    Points
    6 026
    Par défaut


    Faudrait revoir les bases du SQL

    1/ le mot réservé AS ne peut être utilisé qu'associé à 1 colonne ou 1 fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(...) AS TOTAL
    par suite, la référence symbolique dans le from s'écrit
    2/ les valeurs dans la clause WHERE ne doivent pas être mises entre quote pour des colonnes numériques.
    3/ le mot réservé LIKE ne s'applique qu'à des colonnes alphanumériques
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Ce n'est pas moi qui ait écrit cette requête et j'avoue ne pas avoir prêté attention aux erreurs de syntaxe hier soir. Mais le problème ne vient pas de la quoi qu'il en soit. J'ai toute fois essayé de corriger les erreurs de syntaxe pour en être sur et ca n'y change rien. J'ai ensuite testé ma requete en local sur mon installation EasyPHP qui utilise la version 5.0.24-community-log et la ca passe même avec la requete de base (sans modification syntaxique). Ca prouve bien que ca vient de ma version du serveur. Y aurait il une différence entre le binaire mysqld.exe et mysqld-nt.exe? Car je crois que c'est la seule différence que j'ai entre le serveur de production et mon serveur local.

    Juste pour revenir aux problèmes de syntaxe, sauf erreur de ma part, l'utilisation du 'AS' est correcte même sur les noms de table. Pour preuve je peux donner un lien de la doc MySQL où un exemple en atteste :
    http://dev.mysql.com/doc/refman/5.0/...nsitivity.html
    Donc sauf incompréhension de ma part, je pense que tu te trompes.

    Pour ce qui est du LIKE, celui ci peut s'appliquer à des colonnes numériques puisque c'est une extension MYSQL à la norme SQL92 comme en atteste une fois de plus la doc MySQL :
    LIKE est possible avec des colonnes numériques.
    http://dev.mysql.com/doc/refman/5.0/...s-to-ansi.html

    Mais je suis d'accord avec toi qu'il est mieu de se référer à la norme!

    Merci en tout cas pour ce début d'aide.
    ________________________________________
    Evitez les pavés de codes! C'est dur et chiant à lire!
    Pensez aux clostro!

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Les tables sont-elles grosses ? Et avec les même données partout ? Si c'est le cas, comme il semble que les tables ne sont pas indexées...

    Il faudrait voir pour les deux bases ce que donnent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    EXPLAIN SELECT DISTINCT A.id_papier,A.id_type FROM bobine AS A,papier AS B WHERE A.id_papier=B.papier AND A.id_type=B.type AND A.id_client='64' AND A.laize='44' AND A.grammage LIKE '60' ORDER BY B.id_papier;
    SELECT count(*) FROM bobine;
    SELECT count(*) FROM papier;
    Et en bonus peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SHOW INDEXES FROM bobine;
    SHOW INDEXES FROM papier;
    SHOW TABLE STATUS LIKE 'bobine';
    SHOW TABLE STATUS LIKE 'papier';

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Aux dernières nouvelles, j'ai réussi à faire fonctionner mon serveur, mais je n'ai aucune excplication et reste un peu inquiet quant à l'avenir.
    Comme je l'ai dit dans le post précédent, j'ai remarqué que la requete qui bloquait était correctement exécutée sur mon poste de développement équipé de la version 5.0.24.
    Pour en avoir le coeur net, j'ai installé la version 5.0.37 sur mon post. La requete ne voulait de nouveau plus passé. J'ai alors remplacé le binaire mysqld.exe de la version 5.0.37 par celui de la version 5.0.24 et le problème a disparu de nouveau. Il y a donc visiblement une différence entre ces deux versions qui fait que ca plante avec mon environnement de travail SQL (tables...), mais je ne vois pas laquelle.

    J'ai donc procédé aux mêmes modifications sur le serveur principal de production ce qui a résolu le problème également. La seule chose qui me chagrine pour l'instant, c'est que n'ayant pas de binaire nt de la version 5.0.24, j'utilise mysqld.exe. Mais j'ai lu que la version nt était plus optimisée niveau performance pour les environnements pro.

    Je continue donc de chercher pour trouver ce qui n'allait pas. Il y a peut être quelque chose (une manipulation, configuration ou autre...) que je n'ai pas fait par rapport à la dernière version. Je trouve ca vraiment bizarre.

    Les tables bobines et papier ont respectivement 24 488 et 4 920 entrées soit 2.1Mo et 122.7Ko.
    Le moteur utilisé était en MyISAM. Les tables semblent être indexées (autoindexées peut être) via l'utilisation d'un BTREE. Je n'en suis pas sur n'était pas expert dans le domaine et n'ayant pas moi meme créer les bases.

    Je vous remercie pour les réponses.

    PS: Je laisse le post ouvert si des idées vous venaient.
    ________________________________________
    Evitez les pavés de codes! C'est dur et chiant à lire!
    Pensez aux clostro!

  6. #6
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Justement MySQL n'indexe à la base que les clefs primaires et les informations du post d'origine laissent penser que ça en est resté là. Or la jointure se fait sur "A.id_papier=B.papier AND A.id_type=B.type". D'où l'idée de voir si il y a des indexes en plus quelque part, si mysql les utilise pour ses requêtes etc...

    Deux grosses tables et une jointure tordue sans indexation ça peut vite prendre pas mal de temps. Surtout que DISTINCT et ORDER BY n'aident pas. Cela dit ça devrait finir par aboutir Il y a peut-être vraiment un bug...


    Juste un truc, la migration est bien passée par mysqldump ? Parce que
    remplacé le binaire mysqld.exe de la version 5.0.37 par celui de la version 5.0.24
    et utiliser les même fichiers de données ça m'inquète un peu.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Pour ce qui est du transfert de données, j'ai essayé avec les deux et le résultat est le même.
    Pour ce qui est des indexes, il faut que je cherche d'avantage car je ne suis pas callé en la matière. J'avoue que ca m'échappe un peu.
    Mais je reste quand même étonné qu'entre Mysql 5.0.24 5.0.37, il y ait une différence au niveau de l'execution de ma requete. Du coup, est ce que ca vient de l'indexe?, je ne sais pas.
    En tout cas, merci des réponses.
    ________________________________________
    Evitez les pavés de codes! C'est dur et chiant à lire!
    Pensez aux clostro!

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

Discussions similaires

  1. [AC-2010] requete qui fait tout planter
    Par alex61 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/01/2012, 14h30
  2. Requete qui fait planter mysqld
    Par isa150183 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/02/2007, 21h56
  3. Réponses: 3
    Dernier message: 27/01/2007, 09h11
  4. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 18h48
  5. Réponses: 12
    Dernier message: 16/03/2004, 14h21

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