2017-03-23 131 views
1

我想知道是否有人可以帮助解决这个烦人的问题。 我正尝试创建/建立多个连接到不同的数据库。 我有一个名为的conf 3连接凭据data.frame - 它的工作原理,如果我手动输入,像这样的连接变量:R中的多个数据库连接

conn <- dbConnect(MySQL(), user=conf$user, password=conf$passws, host=conf$host, dbname=conf$db) 

其最终建立一个连接。 不过,我要的是能指连接为:

conf$conn <- dbConnect(MySQL(), user=conf$user, password=conf$passws, host=conf$host, dbname=conf$db) 

这里是我得到的错误消息。在代表 错误(值,length.out = NROWS): 试图复制类型的对象“S4”

我认为这个问题是我如何加入的conf $康恩

+0

您不会告诉我们关于conf的任何信息。这在这里很重要。 – Dason

+1

'conf'是否定义为列表?这很难复制。这对我来说似乎没有错误:'conf <-list(); conf $ con $ - dbConnect(RSQLite :: SQLite(),“:memory:”)' – MrFlick

+0

@MrFlick谢谢,我看到你在SQLite上试过它 - 我在MySQL上...所以不知道如何适用。 –

回答

0

我用一个poolconfig包的组合来解决类似的问题,以建立许多PostgreSQL同时连接。请注意,此解决方案需要一个config.yml文件,其连接属性为db1db2

library(pool) 
library(RPostgreSQL) 

connect <- function(cfg) { 
    config <- config::get(config = cfg) 
    dbPool(
    drv = dbDriver("PostgreSQL", max.con = 100), 
    dbname = config$dbname, 
    host = config$host, 
    port = config$port, 
    user = config$user, 
    password = config$password 
) 
} 
conn <- lapply(c("db1", "db2"), connect) 
+0

感谢您的提示,将会给它一个提示并让您知道。 –