通过 RPostgreSQL 传递 postgresql 参数关键字

问题描述 投票:0回答:1

我想使用 R 包 RPostgreQSL 传递一些 参数关键字(特别是

keepalives
keepalives_idle
keepalives_count
connect_timeout
)来连接到我的数据库。 我已经在 docs 和 stackoverflow 中搜索了实现,但没有找到解决方案。

有没有办法使用 RPostgresSQL 传递这些参数关键字?

我尝试过的:

  1. 通过 dbConnect 函数作为附加参数
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)
  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"
  1. 通过dbSendQuery函数:
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"
r postgresql keep-alive rpostgresql
1个回答
0
投票

TL;DR:我认为 RPostgreQSL 目前不支持这些连接参数。

dbConnect-methods 的 R 文档

options 要发送到服务器的命令行选项。

options 指定要发送到服务器的命令行选项 连接开始。例如,将其设置为 -c geqo=off 将设置 session 的 geqo 参数值设置为 off。此内的空格 字符串被视为分隔命令行参数,除非 用反斜杠 () 转义;写 \ 来表示文字 反斜杠。有关可用选项的详细讨论,请参阅 第20章.

  • 我尝试了第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 目前不支持它们。

© www.soinside.com 2019 - 2024. All rights reserved.