2009-05-19 27 views
16

Puede ser que esta pregunta haya sido respondida antes pero no pude encontrarla.Guiones en nombres de columnas en MySQL DB

Estoy utilizando una base de datos MySQL de 2/3 años que tiene guiones en los nombres de sus columnas. Cuando trato de usar estos nombres de mi código Java, los nombres se rompen en el guión (por ejemplo, air_port se convierte en aire) y, por lo tanto, no se encuentran. Traté de reemplazar guiones para subrayar en mi código con la esperanza de que el DB podría tratarlos por igual, pero eso no funciona.

¿Cómo puedo escapar del guión o cómo puedo acceder a estas columnas? ¿Podría ser esto un problema del conjunto de caracteres que se usa?

Respuesta

33

encierran los nombres dentro de ` back-garrapatas `

0

This entry en el foro de MySQL sugiere que es posible que tenga un problema. Sin embargo, creo que se refiere a los datos y no a los nombres de las columnas.

This dice "do not do it." No sé cuan autorizada es.

4

¿Tiene guiones (-) o guiones bajos (_) en los nombres de sus columnas?

Los guiones son un gran problema porque si al final de la asignación de un nombre de la columna a una variable, la mayoría de los idiomas no les gusta tener guiones dentro de los nombres de variables. Quizás esté utilizando una de las bibliotecas de Java que genera automáticamente variables u objetos cuyos nombres se basan en nombres de columnas.

Dependiendo de la naturaleza de su problema, hay un par de enfoques diferentes que puede utilizar:

  1. Renombrar todas sus columnas utilizando ALTER TABLE. Tenga en cuenta que esto podría afectar la integridad referencial u otras aplicaciones que dependen de la base de datos. Si no sabes lo que eso significa, no lo hagas.
  2. Cree vistas de SQL que repitan las tablas que necesita, pero con nombres de columna "mejores". Esto no es muy eficiente, pero te permitirá obtener lo que quieres.
  3. Utilice la palabra clave AS cuando ejecute sus instrucciones SELECT para cambiar el nombre de las columnas dentro de las consultas.

Ninguna de estas soluciones son excelentes, pero deberían ser la primera. ¡Buena suerte!

2

Los guiones en los nombres de las bases de datos tampoco son buenos. Pero puede usarlos con el truco de retroceso `

`name-with-hyphen` 
0

Tuve que crear un db llamado pre-ca_db.

He resuelto el problema con

create database `pre-ca_db`; 

Buena suerte!

0

Es mejor no utilizar guiones en los nombres de sus columnas. Sufrí un gran problema con las afirmaciones de JOIN, donde los guiones causaron grandes problemas, incluso los nombres que salían de los tics de atrás no funcionaban.

Convierta los nombres de las columnas para usar guiones bajos: esta es la forma más segura de hacerlo.

Cuestiones relacionadas