Extract Data from a MySQL Database视图

ezykj2lf  于 2024-01-03  发布在  Mysql
关注(0)|答案(1)|浏览(96)

我尝试使用RStudio从MySQL数据库中的视图访问数据。当我连接到数据库时,它会在连接窗口中显示所有视图的名称。我甚至可以使用dbListTables()函数返回每个视图的名称。
但是,当我尝试运行tbl()函数时,我得到以下错误:

  1. Error: nanodbc/nanodbc.cpp:1655: HY000: [MySQL][ODBC 8.0(a) Driver][mysqld-5.5.5-10.3.34-
  2. MariaDB-log]Prepared statement needs to be re-prepared
  3. <SQL> 'SELECT *
  4. FROM `database_view` AS `q01`
  5. WHERE (0 = 1)'

字符串
以下是我下载的软件包:

  1. library(tidyverse)
  2. library(dbplyr)
  3. library(DBI)
  4. library(odbc)


下面是我的tbl()代码:

  1. tbl(con, "database_view")


下面是我的连接代码(我用括号中的占位符替换了实际值):

  1. con <- DBI::dbConnect(odbc::odbc(),
  2. Driver = "MySQL ODBC 8.0 ANSI Driver",
  3. Server = "[Server]",
  4. UID = "[UID]",
  5. PWD = "[PWD]",
  6. Port = 3306,
  7. Database = "[Database]")


任何帮助将不胜感激!

uqdfh47h

uqdfh47h1#

看起来这和你为DBI包使用的后端有关。RMariaDB::MariaDB()后端似乎不能处理视图。幸运的是,RMySQL::MySQL()可以工作,所以你应该可以使用它。
既然你是用ODBC设置的,我猜你使用的是Maria DB ODBC驱动程序。如果你重新配置你的ODBC连接使用MySQL driver,它应该能解决这个问题。
或者,直接连接到数据库会少一点工作量。你可以安装RMySQL包并使用下面的代码。

  1. # load necessary libraries
  2. library(DBI)
  3. # unable to fetch data from views using the RMariaDB package
  4. mysql <-
  5. DBI::dbConnect(
  6. RMariaDB::MariaDB(),
  7. host = Sys.getenv('host'),
  8. user = Sys.getenv('uid'),
  9. password = Sys.getenv('pwd')
  10. )
  11. data <- dbGetQuery(mysql, 'select * from view')
  12. #> Error: Prepared statement needs to be re-prepared [1615]
  13. # but it works with the RMySQL package
  14. mysql <-
  15. DBI::dbConnect(
  16. RMySQL::MySQL(),
  17. host = Sys.getenv('host'),
  18. user = Sys.getenv('uid'),
  19. password = Sys.getenv('pwd')
  20. )
  21. data <- dbGetQuery(mysql, 'select * from view')

字符串

展开查看全部

相关问题