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 :

Changer le paramètre "lower_case_table_names" [MySQL-5.7]


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Changer le paramètre "lower_case_table_names"
    Bonjour,

    j'utilise MySQL 5.7.17 x86 avec EasyPhp sous Windows 7 (PhpMyAdmin 4.7.0).
    Je dois importer une base de données dont le nom comporte des majuscules, et MySql le transforme systématiquement en minuscules au moment de l'importation. Je précise que la base doit conserver son nom actuel pour diverses raisons.
    J'ai cru comprendre en faisant des recherches, qu'il s'agit d'un fonctionnement normal de MySql, mais qu'on peut l'inhiber en changeant un paramètre du fichier "my.ini" ou en insérant ce paramètre dans "my.ini" :

    set-variable = lower_case_table_names=0

    J'ai effectivement trouvé un fichier "my.ini" dans : C:\Program Files (x86)\EasyPHP-Devserver-17\eds-binaries\dbserver\mysql5717x86x.....

    Il y avait très peu de paramètres dans ce fichier, le paramètre ci-dessus n'y figurait pas, et le fait d'insérer sous la rubrique"[mysqld] (comme mentionné dans une aide en ligne de MySql) bloque le serveur MySql quand je le relance.
    Voici le fichier "my.ini" (non renseigné) :
    Code ini : 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
    [client]
    port = 3306
     
    [mysqld]
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir = ""
     
    #Path to the database root
    datadir = ""
     
    # The default storage engine that will be used when create new tables
    default-storage-engine = MYISAM
     
    bind-address	= 127.0.0.1
    socket			= ""
    log_error 		= ""
     
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    Ai-je choisi le bon fichier my.ini" (je n'en ai pas trouvé d'autres) ? Que faire ?...

  2. #2
    Membre régulier
    Homme Profil pro
    none
    Inscrit en
    Janvier 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Janvier 2020
    Messages : 36
    Points : 72
    Points
    72
    Par défaut
    Hello,

    Il y a un "set-variable =" en trop dans ta syntaxe.

    Utiliser 0 sous windows, qui utilise un système de fichier insensible à la casse, est une mauvaise idée, non supportée.

    https://dev.mysql.com/doc/refman/5.7...se_table_names


    Que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lower_case_table_names = 2

    Have fun

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Bonjour dbnsql

    En effet, j'ai inséré ceci en début du fichier et ça fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [client]
    port = 3306
     
    [mysqld]lower_case_table_names = 2
    J'ai pu renommer ma base avec des majuscules sans problème.
    Un grand merci et bonne journée !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Bonjour,
    je croyais le problème résolu, car je peux renommer ou importer une base avec un nom comportant des majuscules.
    Hélas les requêtes MySql échouent car elles ont un nom de base transcrit en minuscule
    C'est le message d'erreur qui me permet de savoir que le nom est en minuscule au final dans la requête, alors qu'il est en majuscule dans la page php.
    (Pourtant j'ai bien "lower_case_table_names = 2" dans mon fichier my.ini)

  5. #5
    Membre régulier
    Homme Profil pro
    none
    Inscrit en
    Janvier 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Janvier 2020
    Messages : 36
    Points : 72
    Points
    72
    Par défaut
    Hello,

    Si tu es resté sur lower_case_table_names = 2, les objets ont été créés en majuscules (dans ton ton cas), et la comparaison est sensible à la casse.
    As-tu essayé de repasser dans un mode de comparaison non sensible à la casse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lower_case_table_names = 1

    Have fun

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Dans la documentation MySql, il est dit :
    This means such names are not case-sensitive in Windows, but are case-sensitive in most varieties of Unix.
    --> https://dev.mysql.com/doc/refman/8.0...nsitivity.html

    Autrement dit, vous désirez changer le fonctionnement de MySql sous windows, ce qui n'est pas une bonne idée.

    Il est dit aussi :
    Partition, subpartition, column, index, stored routine, event, and resource group names are not case-sensitive on any platform, nor are column aliases.
    Citation Envoyé par auguste19
    Je dois importer une base de données dont le nom comporte des majuscules, et MySql le transforme systématiquement en minuscules au moment de l'importation.
    Le nom des vos tables, déclencheurs, procédures stockées ... doit être en minuscule, sans accent.
    Comme vous faites une importation, il est plus facile de modifier ces noms que de vouloir changer le fonctionnement de MySql sous windows.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre régulier
    Homme Profil pro
    none
    Inscrit en
    Janvier 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Janvier 2020
    Messages : 36
    Points : 72
    Points
    72
    Par défaut
    Hello,

    Dans le meilleur des mondes, bien entendu, on évacue les problèmes de casse à la source.

    Dans le post initial, je lis ceci "Je précise que la base doit conserver son nom actuel pour diverses raisons", je comprends qu'on fera avec ce qu'on a, casse comprise.
    La, ça m’intéresse un peu plus que "bon, faut tout mettre en minuscules...".
    C'est formateur de faire avec un cahier de charge contraint, que les contraintes soient incontournables ou pas.

    En paramétrant un soft, on change toujours son comportement.
    Ça peut être piègeux, certes, mais utile aussi.

    Have fun

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par dbnsql Voir le message
    Hello,
    Si tu es resté sur lower_case_table_names = 2, les objets ont été créés en majuscules (dans ton ton cas), et la comparaison est sensible à la casse.
    As-tu essayé de repasser dans un mode de comparaison non sensible à la casse ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lower_case_table_names = 1
    Have fun
    Bonjour à tous et merci pour vos réponses !

    A dbnsql :
    Oui, dès le début j'ai essayé lower_case_table_names = 1, mais ça bloque complètement le fonctionnement du serveur sans que je sache pourquoi. Fausse piste hélas...

    A Arthémus24 :
    Citation Envoyé par Arthémus24
    Autrement dit, vous désirez changer le fonctionnement de MySql sous windows, ce qui n'est pas une bonne idée.
    il est plus facile de modifier ces noms que de vouloir changer le fonctionnement de MySql sous windows.
    Oui c'est vrai. Le serveur de développement est effectivement sous Linux et le PC sous lequel je développe est sous Windows. Ce n'est pas une bonne idée, je le vois un peu tard
    Ce serait évidemment possible de tout transférer sous Linux mais je perdrais certains outils car je devrais réinstaller complètement mon poste de travail, ce qui compliquerait bien les choses dans la période que nous traversons.
    Par ailleurs je ne suis pas l'auteur de la base avec des majuscules et je ne peux pas imposer à ce dernier qu'il réécrive des kilomètres de code.
    Et si je modifie la table importée pour la mettre en minuscule en développement local uniquement, je dois également modifier mon code Php, puis tout remettre en majuscule avant de faire la mise à jour sur le serveur d'exploitation. Que d'erreurs en perspectives et de complications...
    J'envisage plutôt de régresser vers une version plus ancienne de MySql car je n'avais pas ce problème précédemment (il est apparu récemment avec une réinstallation de PhpMyadmin). Mais je ne sais pas laquelle choisir.

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Auguste19.

    Je suis désolé mais je ne vois pas trop comment vous aider.

    Les choix que vous faites lors de la création d'une base de données peuvent être mineurs et devenir bloquantes par la suite.
    Une bonne modélisation permet d'éviter ce genre de problème.

    Juste une question : personne ne valide le travail qui est mis en production ?
    La personne qui a développé la base de données, ne connait-elle pas les règles de sa mise en oeuvre ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut Auguste19.
    Juste une question : personne ne valide le travail qui est mis en production ?
    La personne qui a développé la base de données, ne connait-elle pas les règles de sa mise en oeuvre ?
    @+
    Bonjour Artemus
    Désolé de répondre tardivement ; si je pense que l'auteur de la base de données connait bien les règles, mais qu'il développe sous Linux, contrairement à moi, et donc n'est pas confronté au même problème. D'autre part c'est un travail déjà ancien, la base est connectée à des interfaces multiples et variées et une refonte complète serait trop coûteuse.
    Merci en tout cas pour le temps passé à répondre, cela m'a permis de faire le tour de la question.
    Bonne continuation et bon w.e.

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

Discussions similaires

  1. XML::DOM changer les doubles quotes
    Par l_dl_d dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 16/04/2010, 12h19
  2. changer marges de quote
    Par Xoxocs dans le forum Mise en forme
    Réponses: 5
    Dernier message: 07/11/2009, 18h32
  3. changer les paramètre d'un frame à partir d'un autre
    Par kenzouza dans le forum JBuilder
    Réponses: 3
    Dernier message: 06/03/2007, 13h31
  4. changer les paramètres d'internet rapidement
    Par Mut dans le forum Windows
    Réponses: 4
    Dernier message: 02/02/2006, 21h30
  5. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39

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