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 :

Caractère tiret (-)


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 20
    Points
    20
    Par défaut Caractère tiret (-)
    Allo,

    Je cherche a exécuter une commande Sql dans laquelle le nom de la BD comporte un tiret seafile-db; Le tiret provoque l'erreur...

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-db' at line 1

    Exemple de requete : mysql> show tables from seafile-db;

    Je suis certain que le problème vient du (-) car tout nom de BD ne comportant pas de (-) donne un résultat concluant.

    Je ne peux pas renommer la BD, quel contournement est possible, j'ai essayé sans succès un \- escape et ai essayé de placer le nom de la BD dans unr variable.

    Une aide sera appréciée.

    Serge

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    JE sais pas en mySQL, mais habituellement on encadre ce genre de nom (de table, ou de champ) par des [ ] ou des " " suivant les SGBD

    show tables from [seafile-db];

    Edit : Il semblerait qu'en MySQL ce soit avec des ' '
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Points : 20
    Points
    20
    Par défaut Encadrer avec les bons délimiteurs.
    Merci à Sevyc64 , la solution était bien d'encadrer avec le caractère (`) et non pas avec (') . A l'écran ca se ressemblait. Votre réponse m'a fait persévérer au bon endroit.

    Ça marche maintenant.

  4. #4
    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 066
    Points
    19 066
    Par défaut
    Salut à tous.

    En effet, sous MySql, on met l'apostrophe non droite (') mais penchée (`).
    Mais on ne met pas n'importe quoi comme caractères dans un nom de base, de table, de trigger ...
    Il y a de bonnes pratiques afin d'éviter des problèmes par la suite.

    1) On utilise l'alphabet, en minuscule (donc pas de majuscules) et pas d'accents.

    2) On utilise aussi les chiffres. De préférence, mettre les chiffres en fin de nom.

    3) Pour les caractères spéciaux, on utilise seulement le souligné (underscore). Interdiction pour les autres caractères comme '$'.

    4) Ne pas utiliser les mots réservées. Donc pas de noms de colonnes comme 'date' ou 'time'.

    5) Mettre les noms au singulier.

    6) On peut définir les noms par la concaténation de mots abrégées par groupe de trois caractères.
    Par exemple, pour une date de début de période, on peut mettre 'datdeb'. Personnellement, je trouve cela parlant.

    7) Comme le souligné est autorisé, on peut préfixer les noms.
    C'est aussi une façon d'utiliser sans risque des mots réservés.

    Vis-à-vis d'un dictionnaire de données, vous connaissez la signification du nom.
    Inutile de changer le nom selon le contexte. Vous pouvez le rendre unique en le préfixant.
    Par exemple T_DATDEB pour la table, et W_DATDEB pour la view.

    Autre exemple, celui de la clef étrangère. On peut préfixer par 'FK_', le nom de la colonne qui sert de référence.

    8) Et aussi, utiliser des noms courts, mais parlant. J'ai horreur d'avoir des noms en rallonge.
    Pas d'ambiguïté dans les noms. Eviter de faire l'usage du zéro et du O pour différencier deux noms.

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

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

Discussions similaires

  1. [MySQL] encodage sur les caractères : quote, tirets
    Par tigunn dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/01/2014, 14h32
  2. [XL-2007] Chaine de caractère après dernier tiret
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2013, 12h44
  3. [AC-2007] Extraire les caractères compris entre 2 tirets
    Par kedmard dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/06/2013, 20h47
  4. [RegExp] regexp qui accepte les caractères numériques et les tirets
    Par laurentSc dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 22/02/2011, 10h30
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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