Попаднах на същия разочароващ проблем. Понякога AS
ключова дума би имала предвидения ефект, но друг път не би. Не успях да идентифицирам условията, за да го накарам да работи правилно.
Кратък отговор: (Благодаря на Simon Urbanek (поддръжник на пакети за RJDBC), Yev и Sebastien! Вижте Дългия отговор. ) Едно нещо, което може да опитате е да отворите вашата JDBC връзка с помощта на ?useOldAliasMetadataBehavior=true
във вашия низ за връзка. Пример:
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)
Това свърши работа за мен! Вижте повече подробности, включително предупреждения, в Дългия отговор
Дълъг отговор: Опитах всякакви неща, включително създаване на изгледи, промяна на заявки, използване на оператори JOIN, НЕ използване на оператори JOIN, използване на оператори ORDER BY и GROUP BY и т.н. Никога не успях да разбера защо някои от моите заявки успяха да преименуват колони а други не бяха.
Свързах се с поддържащия пакет (Симон Урбанек.) Ето какво каза той:
След това той ми препоръча да се уверя, че имам най-новия JDBC драйвер за MySQL. Имах най-новата версия. Това обаче ме накара да се замисля „може би това е грешка с драйвера на JDBC“. И така, потърсих в Google:mysql jdbc driver bug alias
.
Най-добрият резултат за тази заявка беше запис в bugs.mysql.com . Yev, използвайки MySQL 5.1.22, казва, че когато надстрои от версия на драйвера 5.0.4 до 5.1.5, псевдонимите на колоните му спряха да работят. Попитан дали е грешка.
Себастиен отговори:"Не, това не е грешка! Това е документирана промяна в поведението във всички следващи версии на драйвера." и се предлага използването на ?useOldAliasMetadataBehavior=true
, цитирайки документация за JDBC драйвера
.
Предупреждение Лектор: Документацията за драйвера на JDBC гласи, че
Нямах време да проуча напълно какво означава това. С други думи, не знам какви са всички последици от използването на useOldAliasMetadataBehavior=true
са. Използвайте на свой собствен риск. Някой друг има ли повече информация?