Saya telah mengalami masalah frustasi yang sama. Terkadang AS
kata kunci akan memiliki efek yang diinginkan, tetapi di lain waktu tidak. Saya tidak dapat mengidentifikasi kondisi untuk membuatnya bekerja dengan benar.
Jawaban Singkat: (Terima kasih kepada Simon Urbanek (pengelola paket untuk RJDBC), Yev, dan Sebastien! Lihat Jawaban Panjang. ) Satu hal yang dapat Anda coba adalah membuka koneksi JDBC Anda menggunakan ?useOldAliasMetadataBehavior=true
di string koneksi Anda. Contoh:
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)
Ini akhirnya bekerja untuk saya! Lihat detail selengkapnya, termasuk peringatan, di Jawaban Panjang.
Jawaban Panjang: Saya mencoba segala macam hal, termasuk membuat tampilan, mengubah kueri, menggunakan pernyataan GABUNG, TIDAK menggunakan pernyataan GABUNG, menggunakan pernyataan ORDER BY dan GROUP BY, dll. Saya tidak pernah dapat mengetahui mengapa beberapa pertanyaan saya dapat mengganti nama kolom dan yang lainnya tidak.
Saya menghubungi pengelola paket (Simon Urbanek.) Inilah yang dia katakan:
Dia kemudian merekomendasikan agar saya memastikan saya memiliki driver JDBC terbaru untuk MySQL. Saya memang memiliki versi terbaru. Namun, itu membuat saya berpikir "mungkin itu bug dengan driver JDBC." Jadi, saya mencari Google untuk:mysql jdbc driver bug alias
.
Hasil teratas untuk kueri ini adalah entri di bugs.mysql.com . Yev, menggunakan MySQL 5.1.22, mengatakan bahwa ketika dia mengupgrade dari driver versi 5.0.4 ke 5.1.5, alias kolomnya berhenti bekerja. Ditanya apakah itu bug.
Sebastien menjawab, "Tidak, ini bukan bug! Ini adalah perubahan perilaku yang terdokumentasi di semua versi driver berikutnya." dan disarankan menggunakan ?useOldAliasMetadataBehavior=true
, mengutip dokumentasi untuk driver JDBC
.
Peringatan Lektor: Dokumentasi untuk driver JDBC menyatakan bahwa
Saya belum punya waktu untuk sepenuhnya meneliti apa artinya ini. Dengan kata lain, saya tidak tahu apa semua konsekuensi dari penggunaan useOldAliasMetadataBehavior=true
adalah. Gunakan dengan risiko Anda sendiri. Apakah ada orang lain yang memiliki informasi lebih lanjut?