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 :

Pouvoir mettre le nom des tables en majuscule ou miuscule dans les requêts SQL.


Sujet :

Requêtes MySQL

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut Pouvoir mettre le nom des tables en majuscule ou miuscule dans les requêts SQL.
    Bonjour,

    J'ai un souci de casse sur le nom des tables. Dans mon application, certaines requêtes se présentent ainsi (avec le nom des tables en majuscule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COL1, COL2 FROM MATABLE
    et d'autres comme ça (avec le nom des tables en minuscule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COL1, COL2 FROM matable

    Sur les serveurs de production, tout fonctionne. Or je viens de reprendre l'application et l’installer sur un serveur de dèv et là, MySQL me sort une erreur sur les requêtes dont le nom de mes tables en majuscule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'MATABLE' doesn't exist
    Je dois donc avoir une différence de paramétrage entre mon Mysql de production et celui de dèv.

    Alors vous allez me dire qu'il me suffirait de modifier mes requêtes et de mettre le nom des tables en minuscule, mais le souci c'est que l’application comporte des centaines de requêtes dispatchées dans pleins de fichiers donc le travail serait trop fastidieux.

    Ma question est donc la suivante : comment paramétrer Mysql pour pouvoir exécuter des requêtes avec le nom des tables indifféremment en majuscule ou minuscule ?

    Merci d'avance


    PS : le paramètre "lower_case_table_names" de Mysql ne correspond pas à mon besoin car il sert à exécuter des requêtes avec le nom ds tables en minuscule même si les tables ont été créé dans Mysql en majuscule, ce qui est un peu différent de mon problème.
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je pense que si, mais tout dépend des OS source et cible pour trouver la bonne valeur.
    Je pense qu'il faut redémarrer mysql et relancer l'import en dev après avoir changer le paramètre :
    Sensibilité à la casse pour les noms
    1 Les noms de tables sont stockées en minuscules sur le disque, et les comparaisons de nom de tables sont insensibles à la casse. Ce comportement s'applique aussi aux noms de bases de données depuis MySQL 4.0.2, et aux alias de tables depuis 4.1.1. C'est la valeur par défaut sur les systèmes Windows et Mac OS X.
    As tu essayé la valeur 1 ?

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Je pense que si, mais tout dépend des OS source et cible pour trouver la bonne valeur.
    Les OS source et cibles sont tous les deux des Red Hat Enterprise Linux 5.4

    Citation Envoyé par skuatamad Voir le message
    Je pense qu'il faut redémarrer mysql et relancer l'import en dev après avoir changer le paramètre :
    Sensibilité à la casse pour les noms

    As tu essayé la valeur 1 ?
    J'ai ajouté la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lower_case_table_names = 1
    à la fin de mon fichier my.cnf, j'ai redémarré MySQL et recharger mon dump mais le problème persiste
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  4. #4
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    J'ai également testé en mettant les valeurs 0 et 2 mais sans succès.
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  5. #5
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Bon j'ai finalement trouvé, c’est vicieux...

    J'avais d’abord placé le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lower_case_table_names = 1
    à la fin du fichier my.cnf, cela ne fontionnait pas. Je l'ai déplacé plus haut dans le fichier (après "thread_concurrency = 8"), et là cela fonctionne...

    Si quelqu'un sait m'expliquer pourquoi je suis preneur !

    En tout les cas je considère mon problème résolu.

    Merci à skuatamad pour ton aide
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

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

Discussions similaires

  1. [PHP 5.4] Insérer des valeurs saisies par l'utilisateur dans une requête SQL
    Par B.Berthod dans le forum Langage
    Réponses: 1
    Dernier message: 22/01/2015, 09h28
  2. [PHP 5.0] Mettre le nom des acteurs en majuscule
    Par Marc31 dans le forum Langage
    Réponses: 5
    Dernier message: 05/03/2014, 14h42
  3. [MySQL] Mettre le nom des champs d'une table dans un tableau
    Par beegees dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/10/2008, 15h43
  4. Afficher noms des tables d'une base
    Par jeff37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2004, 16h00
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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