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

Requêtes MySQL Discussion :

Crash de mysql 5.0.18-nt


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut Crash de mysql 5.0.18-nt
    Voici une "petite" requête qui récupère la somme totale des temps passés, des RTT et des heures supplémentaires accumulées pour chaque employé toujours actif pour un mois donné.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    SELECT CONCAT( geogestion_personnel.nom, ' ', geogestion_personnel.prenom ) AS nom,
    SUM( total ) AS total,
    SUM( RTT ) AS RTT,
    SUM( sup ) AS sup
    FROM geogestion_personnel
    LEFT JOIN (
        SELECT perso,
        ROUND( SUM( duration ) , 2 ) AS total,
        ROUND(
            IF( cal_flags.libelle = 'null',
                CASE DATE_FORMAT( cal.date, '%w' )
                WHEN 1 THEN 
                    0
                WHEN 2 THEN
                    GREATEST( 0, LEAST( 1, SUM( duration ) -7 ) )
                WHEN 3 THEN
                    GREATEST( 0, LEAST( 1, SUM( duration ) -7 ) )
                WHEN 4 THEN
                    GREATEST( 0, LEAST( 1, SUM( duration ) -7 ) )
                WHEN 5 THEN
                    0
                END , 0
            ) , 2
        ) AS RTT,
        ROUND(
            IF( cal_flags.libelle = 'null',
                CASE DATE_FORMAT( cal.date, '%w' )
                WHEN 1 THEN
                    GREATEST( 0, SUM( duration ) -7 )
                WHEN 2 THEN
                    GREATEST( 0, SUM( duration ) -8 )
                WHEN 3 THEN
                    GREATEST( 0, SUM( duration ) -8 )
                WHEN 4 THEN
                    GREATEST( 0, SUM( duration ) -8 )
                WHEN 5 THEN
                    GREATEST( 0, SUM( duration ) -7 )
                END ,
                SUM( duration )
            ) , 2
        ) AS sup
        FROM tp
        LEFT JOIN cal ON ( tp.date = cal.date )
        LEFT JOIN cal_flags ON ( cal.flag = cal_flags.flag )
        WHERE tp.date BETWEEN '2006-01-01' AND '2006-01-31'
        GROUP BY cal.date, perso
    ) AS tmp ON ( geogestion_personnel.id = tmp.perso )
    WHERE geogestion_personnel.dateSortie = '0000-00-00'
    GROUP BY geogestion_personnel.nom, geogestion_personnel.prenom, geogestion_personnel.bureau
    ORDER BY geogestion_personnel.bureau ASC , nom ASC
    LIMIT 0 , 30
    La table dérivée ne semble pas provoquer de problème, en revanche, l'ensemble fait quasiment systématiquement crasher mysql...

    Je viens de faire un petit changement, et ça semble régler le problème :
    J'ai remplacé cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY geogestion_personnel.bureau ASC , nom ASC
    par celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY geogestion_personnel.bureau ASC, geogestion_personnel.nom ASC,geogestion_personnel.prenom ASC
    et il semblerait que mysql ne crash plus.

    Cela n'aurait donc été qu'un problème d'ambiguïté ou y a-t-il une raison plus spécifique, comme par exemple le tri sur un CONCAT qui provoquerait des crashs ?

    Edit :
    Je viens de refaire le test en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CONCAT(nom,' ',prenom) as nom
    ...
    ORDER BY... nom ASC
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CONCAT(nom,' ',prenom) as nome
    ...
    ORDER BY... nome ASC
    Et ça re-plante. Mysql aurait-il un bug au niveau du tri sur un CONCAT ?

    Edit2 :
    C'était trop beau... Ca plante toujours avec le changement initial sur ORDER BY.

  2. #2
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Je suis passé à la 5.0.19-nt et ça ne plante plus apparemment.

    Donc je marque ça en tant que résolu.

    Edit :
    Pour information, j'ai été voir le changelog de la 5.0.19, et en définitive, voici le bug qui était à la source de mes problèmes :
    http://bugs.mysql.com/bug.php?id=16382

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

Discussions similaires

  1. crash de mysql-nt
    Par elekis dans le forum MySQL
    Réponses: 2
    Dernier message: 16/06/2009, 15h00
  2. Table mySQL crashed
    Par aptaker dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/12/2006, 15h41
  3. MySQL 5 crash
    Par lolo le belge dans le forum Installation
    Réponses: 2
    Dernier message: 13/12/2006, 11h27
  4. crash mysql et perte données
    Par warl dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/07/2006, 18h10
  5. Checking for crashed MySQL tables in the background
    Par Invité dans le forum Installation
    Réponses: 1
    Dernier message: 11/12/2005, 14h59

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