Ik ben tegen hetzelfde frustrerende probleem aangelopen. Soms is de AS
zoekwoord zou het beoogde effect hebben, maar andere keren niet. Ik kon de voorwaarden niet identificeren om het correct te laten werken.
Kort antwoord: (Met dank aan Simon Urbanek (pakketbeheerder voor RJDBC), Yev en Sebastien! Zie het Lange antwoord. ) Een ding dat u kunt proberen, is uw JDBC-verbinding te openen met ?useOldAliasMetadataBehavior=true
in uw verbindingsreeks. Voorbeeld:
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)
Dit werkte uiteindelijk voor mij! Bekijk meer details, inclusief kanttekeningen, in het Lange antwoord
Lang antwoord: Ik heb van alles geprobeerd, inclusief het maken van views, het wijzigen van query's, het gebruik van JOIN-instructies, het NIET gebruiken van JOIN-statements, het gebruik van ORDER BY en GROUP BY-statements, enz. Ik heb nooit kunnen achterhalen waarom sommige van mijn query's de naam van kolommen konden wijzigen en anderen niet.
Ik heb contact opgenomen met de pakketbeheerder (Simon Urbanek.) Dit is wat hij zei:
Vervolgens raadde hij me aan ervoor te zorgen dat ik de meest recente JDBC-driver voor MySQL had. Ik had wel de meest recente versie. Het zette me echter aan het denken "misschien IS het een bug met het JDBC-stuurprogramma." Dus zocht ik op Google naar:mysql jdbc driver bug alias
.
Het beste resultaat voor deze zoekopdracht was een bericht op bugs.mysql.com . Yev, die MySQL 5.1.22 gebruikt, zegt dat toen hij een upgrade uitvoerde van stuurprogrammaversie 5.0.4 naar 5.1.5, zijn kolomaliassen niet meer werkten. Gevraagd of het een bug was.
Sebastien antwoordde:"Nee, het is geen bug! Het is een gedocumenteerde gedragsverandering in alle volgende versies van het stuurprogramma." en stelde voor om ?useOldAliasMetadataBehavior=true
. te gebruiken , onder verwijzing naar documentatie voor het JDBC-stuurprogramma
.
Voorbehoud lector: In de documentatie voor het JDBC-stuurprogramma staat dat
Ik heb niet de tijd gehad om volledig te onderzoeken wat dit betekent. Met andere woorden, ik weet niet wat alle gevolgen zijn van het gebruik van useOldAliasMetadataBehavior=true
zijn. Gebruik op eigen risico. Heeft iemand anders meer informatie?