2009-05-19 4 views
16

Peut-être que cette question a déjà été répondue mais je n'ai pas pu la trouver. J'utilise une base de données MySQL vieille de 2/3 ans qui a des traits d'union dans ses noms de colonnes. Lorsque j'essaie d'utiliser ces noms à partir de mon code Java, les noms sont rompus au trait d'union (par exemple, air_port devient air) et ne sont donc pas trouvés. J'ai essayé de remplacer les traits d'union par des traits de soulignement dans mon code en espérant que la base de données les traite de la même manière, mais cela ne fonctionne pas. Comment puis-je échapper au trait d'union ou comment puis-je accéder à ces colonnes?Les traits d'union dans les noms de colonnes dans MySQL DB

Cela pourrait-il être un problème avec le jeu de caractères utilisé?

Répondre

33

placiez les noms dans ` dos-tiques `

0

This entry au forum MySQL suggère que vous pourriez avoir un problème. Cependant, je pense que cela fait référence aux données et non aux noms de colonnes.

This dit "ne le faites pas". Je ne sais pas comment cela fait autorité.

4

Avez-vous des traits d'union (-) ou des traits de soulignement (_) dans les noms de colonnes? Les traits d'union sont un gros problème car si vous finissez par faire correspondre un nom de colonne à une variable, la plupart des langages n'aiment pas avoir de traits d'union dans les noms de variables. Vous utilisez peut-être l'une des bibliothèques Java qui génère automatiquement des variables ou des objets dont les noms sont basés sur des noms de colonnes.

Selon la nature de votre problème, il y a deux approches différentes, vous pouvez utiliser:

  1. Renommer toutes vos colonnes à l'aide ALTER TABLE. Sachez que cela peut affecter l'intégrité référentielle ou d'autres applications qui dépendent de la base de données. Si vous ne savez pas ce que cela signifie, ne le faites pas.
  2. Créez des vues SQL simples qui réaffichent les tables dont vous avez besoin mais avec des noms de colonnes "meilleurs". Ce n'est pas très efficace, mais cela vous permettra d'obtenir ce que vous voulez.
  3. Utilisez le mot-clé AS lors de l'exécution de vos instructions SELECT pour renommer les colonnes dans les requêtes.

Aucune de ces solutions n'est excellente, mais elles devraient vous aider à démarrer. Bonne chance!

2

Les traits d'union dans les noms de bases de données ne sont pas bons aussi. Mais vous pouvez les utiliser avec l'astuce backtick `

`name-with-hyphen` 
0

J'ai dû créer un db nommé pre-ca_db.

Je résolu le problème avec

create database `pre-ca_db`; 

Bonne chance!

0

Il est préférable de ne pas utiliser les traits d'union dans vos noms de colonnes. J'ai souffert d'un gros problème avec les instructions JOIN où les tirets causaient de gros problèmes - même les noms qui s'échappaient dans les tics arrière ne marchaient pas.

Convertissez les noms de colonnes pour utiliser des traits de soulignement - c'est la manière la plus sûre d'y aller.

Questions connexes