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 :

[bug de MySQL 4.1 utf8] résultat erroné avec index partiel


Sujet :

Requêtes MySQL

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut [bug de MySQL 4.1 utf8] résultat erroné avec index partiel
    J'ai crée une table avec quelques valeurs tel que ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `test` (
    `nom` varchar(15) character set utf8 collate utf8_swedish_ci NOT NULL default 'FR',
    KEY `nom` (`nom`(2))
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    INSERT INTO `test` VALUES ('location');
    INSERT INTO `test` VALUES ('loberge');
    INSERT INTO `test` VALUES ('lotre');
    INSERT INTO `test` VALUES ('boabab');
    J'ai testé sous MySQL 4.1.7 sous windows et sous linux et j'obtiens le même problème :
    Lorsque j'effectue la requète :
    SELECT * from test where nom like 'lo%'
    MySQL m'indique qu'il n'y a pas de tuple correspondant à cette requète alors qu'il y en a de toute façon !
    J'ai constaté qu'en mettant un index total ça marchait tres bien, idem sans en mettre, mais avec un index partiel, ça pose problème.
    SELECT * from test where nom like 'l%' me renvoie par contre les 4 tuples
    'l%' => 4 tuples OK
    'lo%' => 0 tuples PAS OK
    'loc%' => 0 tuples PAS OK
    'loca%' => 1 tuple OK
    'locat%' => 1 tuple OK
    'locati%' => 1 tuple OK
    etc..

    l'index partiel de 2 caractères s'affiche ensuite en 4 (octets?) sous phpMyAdmin

    si je souhaite un index partiel, c'est parce que la table réelle contiendra plusieurs millions de tuples et que c'est certainement la meilleure solution.
    L'utilisation de l'utf8 est aussi réfléchi, j'ai testé en latin1, ça marche comme il faut

    Je pense à un bug de MySQL, mais ça me parrait curieux quand même..

    J'aimerais bien que qqun teste aussi de son coté avec MySQL 4.1 pour voir s'il obtiens les mêmes resultats
    J'ai testé en ligne de commande et sous phpMyAdmin, ça donne le même resultat (NB: sous phpMyAdmin, changez " Interclassement pour la connection MySQL" en utf8_swedish_ci)
    Merci d'avance ...


    [Titre édité par Maximilian]

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 64
    Par défaut
    J'ai essayé, alors de mon côté mêmes résultats que toi, mais si l'on prend 5 à la place de 4 pour la taille de l'index, ça fonctionne, sinon tu peux ne pas spécifier de taille pour le commencement.

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    ça commencera directement à plus de 4 millions d'enregistrement, et la table sera surtout consulté en lecture, donc je peux pas faire grand chose..

    Je demanderais un minimum de 4 caractères alors en attendant

    Merci bcp d'avoir tester

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    bon, je l'ai signalé comme bugs à MySQL puisque ça en est un... j'espère que ça sera corrigé prochainement... http://bugs.mysql.com/6643

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 64
    Par défaut
    Ok tiens-nous au courant pour la suite

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    à priori le bug a été résolu (il est passé en closed dans leur interface).

    Je suppose donc que ça veut dire que dans la prochaine version, cela sera corrigé.

    Et comme j'ai pas trop envie de récupérer les sources et de recompiler moi même, je vais attendre...

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

Discussions similaires

  1. [5.1.8] Résultats erronés
    Par LogaR dans le forum Débuter
    Réponses: 1
    Dernier message: 20/08/2008, 17h45
  2. bug - probléme mysql
    Par koKoTis dans le forum Administration
    Réponses: 11
    Dernier message: 05/02/2008, 08h32
  3. [Tableaux] array_search : résultat erroné
    Par mat10000 dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2007, 09h14
  4. Réponses: 6
    Dernier message: 22/12/2006, 14h14
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

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