2009-05-19 8 views
16

Può essere che questa domanda abbia avuto risposta prima ma non ho potuto trovarla.I trattini nei nomi delle colonne nel DB MySQL

Sto utilizzando un database MySQL vecchio di 2/3 anni con trattini nei nomi delle colonne. Quando provo a utilizzare questi nomi dal mio codice Java, i nomi vengono interrotti nel trattino (ad esempio, air_port diventa aria) e quindi non vengono trovati. Ho provato a rimpiazzare i trattini come caratteri di sottolineatura nel mio codice sperando che il DB li possa trattare allo stesso modo, ma questo non funziona.

Come posso evitare il trattino o come posso accedere a queste colonne? Questo potrebbe essere un problema con il set di caratteri usato?

risposta

33

racchiudono i nomi all'interno ` back-zecche `

0

This entry al forum MySQL suggerisce che si potrebbe avere un problema. Tuttavia, penso che si riferisca ai dati e non ai nomi delle colonne.

This dice "non farlo". Non so quanto sia autorevole.

4

Hai trattini (-) o caratteri di sottolineatura (_) nei nomi delle colonne?

I trattini sono un grosso problema perché se si termina di associare un nome di colonna a una variabile, la maggior parte delle lingue non ama avere trattini all'interno di nomi di variabili. Forse stai usando una delle librerie Java che genera automaticamente variabili o oggetti i cui nomi sono basati su nomi di colonne.

A seconda della natura del problema, ci sono un paio di approcci diversi è possibile utilizzare:

  1. Rinomina tutte le colonne utilizzando ALTER TABLE. Essere consapevoli del fatto che ciò potrebbe influire sull'integrità referenziale o altre applicazioni che dipendono dal database. Se non sai cosa significa, non farlo.
  2. Creare viste SQL che semplificano le tabelle necessarie ma con nomi di colonne "migliori". Questo non è molto efficiente, ma ti permetterà di ottenere quello che vuoi.
  3. Utilizzare la parola chiave AS durante l'esecuzione delle istruzioni SELECT per rinominare le colonne all'interno delle query.

Nessuno di questi è soluzioni grandiose, ma dovrebbero iniziare. In bocca al lupo!

2

I trattini nei nomi dei database non sono ugualmente validi. Ma puoi usarli con il trucco dell'upticcio `

`name-with-hyphen` 
0

Ho dovuto creare un db denominato pre-ca_db.

ho risolto il problema con

create database `pre-ca_db`; 

Buona fortuna!

0

È meglio non utilizzare i trattini nei nomi delle colonne. Ho sofferto un grosso problema con le dichiarazioni JOIN, in cui i trattini causavano grossi problemi - persino i nomi sfuggiti ai back tick non funzionavano.

Converti i nomi delle colonne per utilizzare caratteri di sottolineatura - questo è il modo più sicuro per procedere.

Problemi correlati