Me he encontrado con el mismo problema frustrante. A veces, la palabra clave AS
tendría su efecto previsto, pero otras veces no lo haría. No pude identificar las condiciones para que funcione correctamente.
respuesta corta: (!. Gracias a Simon Urbanek (mantenedor del paquete de RJDBC), Yev, y Sebastien Ver el Respuesta larga) Una cosa que usted puede intentar es abrir su conexión JDBC utilizando ?useOldAliasMetadataBehavior=true
en su Cadena de conexión. Ejemplo:
drv <- JDBC("com.mysql.jdbc.Driver", "C:/JDBC/mysql-connector-java-5.1.18-bin.jar", identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://server/schema?useOldAliasMetadataBehavior=true", "username", "password")
query <- "SELECT `a` AS `b` FROM table"
result <- dbGetQuery(conn, query)
dbDisconnect(conn)
¡Esto terminó trabajando para mí! Vea más detalles, incluyendo advertencias, en el Respuesta larga.
Respuesta larga: he intentado todo tipo de cosas, incluyendo hacer vistas, el cambio de consultas, utilizando instrucciones JOIN, NO usando instrucciones JOIN, utilizando ORDER BY y GROUP BY declaraciones, etc. Nunca he sido capaz de averiguar por qué algunas de mis consultas fueron capaces de cambiar el nombre de las columnas y otras no.
Me puso el mantenedor del paquete Esto es lo que dijo (Simon Urbanek.):
En la gran mayoría de los casos esto es un problema en el controlador JDBC, porque no hay realmente mucho RJDBC puede hacer aparte de llamar al conductor.
Luego me recomendó que me asegurara de tener el controlador JDBC más reciente para MySQL. Yo tenía la versión más reciente. Sin embargo, me hizo pensar "tal vez es un error con el controlador JDBC". Entonces, busqué en Google por: mysql jdbc driver bug alias
.
El resultado más importante para esta consulta es an entry at bugs.mysql.com. Yev, utilizando MySQL 5.1.22, dice que cuando actualizó desde la versión de controlador 5.0.4 a 5.1.5, sus alias de columna dejaron de funcionar. Cuando se le preguntó si era un error.
Sebastien respondió: "No, no es un error. Es un cambio de comportamiento documentado en todas las versiones posteriores del controlador". y sugirió usar ?useOldAliasMetadataBehavior=true
, citando documentation for the JDBC driver.
Advertencia Lector: La documentación para el controlador JDBC establece que
useColumnNamesInFindColumn es preferible a useOldAliasMetadataBehavior a menos que necesite el comportamiento específico que proporciona con respecto a ResultSetMetadata.
No he tenido tiempo de investigar por completo lo que esto significa. En otras palabras, no sé cuáles son todas las ramificaciones del uso de useOldAliasMetadataBehavior=true
. Úselo bajo su propio riesgo. ¿Alguien más tiene más información?
Acabo de probarlo y puedo confirmar el problema. Desafortunadamente no tengo una solución. – ROLO
me parece un error. –