Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengganti nama kolom dalam pernyataan pilih MySQL dengan paket R RJDBC

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?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ColdFusion - Memasukkan karakter arab/persia ke mysql

  2. Memindahkan data dari tabel lama ke tabel lain PHP MYSQL

  3. MySQL/PHP:Cara mendapatkan kolom dan data terkait

  4. Ubah format tanggal di tabel database mySql

  5. Bagaimana cara mempercepat SELECT .. LIKE query di MySQL pada banyak kolom?