Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đổi tên các cột trong câu lệnh chọn MySQL với R gói RJDBC

Tôi đã gặp phải cùng một vấn đề khó chịu. Đôi khi AS từ khóa sẽ có tác dụng dự kiến, nhưng những lần khác thì không. Tôi không thể xác định các điều kiện để làm cho nó hoạt động chính xác.

Câu trả lời ngắn gọn: (Cảm ơn Simon Urbanek (người bảo trì gói cho RJDBC), Yev và Sebastien! Hãy xem Câu trả lời dài. ) Một điều mà bạn có thể thử là mở kết nối JDBC của mình bằng ?useOldAliasMetadataBehavior=true trong chuỗi kết nối của bạn. Ví dụ:

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)

Điều này đã kết thúc làm việc cho tôi! Xem thêm chi tiết, bao gồm cả cảnh báo, trong Câu trả lời dài.

Câu trả lời dài: Tôi đã thử tất cả các loại, bao gồm tạo khung nhìn, thay đổi truy vấn, sử dụng câu lệnh JOIN, KHÔNG sử dụng câu lệnh JOIN, sử dụng câu lệnh ORDER BY và GROUP BY, v.v. Tôi không bao giờ tìm ra lý do tại sao một số truy vấn của tôi có thể đổi tên cột và những người khác thì không.

Tôi đã liên hệ với người bảo trì gói (Simon Urbanek.) Đây là những gì anh ta nói:

Sau đó, anh ấy đề nghị tôi đảm bảo rằng tôi có trình điều khiển JDBC mới nhất cho MySQL. Tôi đã có phiên bản gần đây nhất. Tuy nhiên, tôi nghĩ rằng "có thể đó là lỗi với trình điều khiển JDBC." Vì vậy, tôi đã tìm kiếm trên Google cho:mysql jdbc driver bug alias .

Kết quả hàng đầu cho truy vấn này là một mục nhập tại bug.mysql.com . Yev, sử dụng MySQL 5.1.22, nói rằng khi anh ấy nâng cấp từ phiên bản trình điều khiển 5.0.4 lên 5.1.5, bí danh cột của anh ấy ngừng hoạt động. Được hỏi liệu đó có phải là lỗi không.

Sebastien trả lời:"Không, đó không phải là lỗi! Đó là sự thay đổi hành vi được ghi nhận trong tất cả các phiên bản trình điều khiển tiếp theo." và được đề xuất bằng cách sử dụng ?useOldAliasMetadataBehavior=true , trích dẫn tài liệu cho trình điều khiển JDBC .

Cảnh báo trước: Tài liệu cho trình điều khiển JDBC nói rằng

Tôi không có thời gian để nghiên cứu đầy đủ điều này có nghĩa là gì. Nói cách khác, tôi không biết tất cả các phân nhánh của việc sử dụng useOldAliasMetadataBehavior=true là gì là. Sử dụng có nguy cơ của riêng bạn. Ai khác có thêm thông tin?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL InnoDB chỉ khóa các hàng bị ảnh hưởng?

  2. MySql - Cách cập nhật một phần của chuỗi?

  3. Thay thế \ r \ n bằng PHP

  4. Làm cách nào để loại bỏ tất cả các bảng khỏi cơ sở dữ liệu với management.py CLI trong Django?

  5. mysql -> chèn vào tbl (chọn từ bảng khác) và một số giá trị mặc định