我想使用 R 包 RPostgreQSL 传递一些 参数关键字(特别是
keepalives
、keepalives_idle
、keepalives_count
或 connect_timeout
)来连接到我的数据库。
我已经在 docs 和 stackoverflow 中搜索了实现,但没有找到解决方案。
有没有办法使用 RPostgresSQL 传递这些参数关键字?
我尝试过的:
conn <- RPostgreSQL::dbConnect(driver,
host = Sys.getenv("DBHOST"),
dbname = Sys.getenv("DBNAME"),
user = Sys.getenv("DBUSER"),
password = Sys.getenv("DBPASSWORD"),
port = Sys.getenv("DBPORT"),
# Parameter Keywords
connect_timeout = 2,
keepalives = 0,
keepalives_idle = 0,
keepalives_count = 1,
)
这会导致:
Error in postgresqlNewConnection(drv, ...) :
unused arguments (connect_timeout = 2, keepalives = 0, keepalives_idle = 0, keepalives_count = 1)
conn <- RPostgreSQL::dbConnect(driver,
host = Sys.getenv("DBHOST"),
dbname = Sys.getenv("DBNAME"),
user = Sys.getenv("DBUSER"),
password = Sys.getenv("DBPASSWORD"),
port = Sys.getenv("DBPORT"),
options = "-c connect_timeout=2"
)
这会导致:
Error in postgresqlNewConnection(drv, ...) :
RPosgreSQL error: could not connect <omitted>@<omitted>:<omitted> on dbname "<omitted>" FATAL: unrecognized configuration parameter "connect_timeout"
RPostgreSQL::dbSendQuery(conn, "SET statement_timeout to 1; SET connect_timeout to 2 ")
这会导致
Error in postgresqlExecStatement(conn, statement, ...) :
RPosgreSQL error: could not Retrieve the result : ERROR: unrecognized configuration parameter "connect_timeout"
TL;DR:我认为 RPostgreQSL 目前不支持这些连接参数。
dbConnect-methods 的 R 文档 说
options 要发送到服务器的命令行选项。
options 指定要发送到服务器的命令行选项 连接开始。例如,将其设置为 -c geqo=off 将设置 session 的 geqo 参数值设置为 off。此内的空格 字符串被视为分隔命令行参数,除非 用反斜杠 () 转义;写 \ 来表示文字 反斜杠。有关可用选项的详细讨论,请参阅 第20章.
conn <- RPostgreSQL::dbConnect(driver,
host = Sys.getenv("DBHOST"),
dbname = Sys.getenv("DBNAME"),
user = Sys.getenv("DBUSER"),
password = Sys.getenv("DBPASSWORD"),
port = Sys.getenv("DBPORT"),
options="-c client_min_messages=error"
)
但是您要使用的参数,例如
connect_timeout
,不属于第 20 章(服务器选项)。相反,它们是与 options
参数并行的连接参数。我的预感是 RPostgreQSL 目前不支持它们。