Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何解决一个“问题”;过期的PostgreSQLConnection“;错误?_R_Postgresql_Database Connection - Fatal编程技术网

R如何解决一个“问题”;过期的PostgreSQLConnection“;错误?

R如何解决一个“问题”;过期的PostgreSQLConnection“;错误?,r,postgresql,database-connection,R,Postgresql,Database Connection,我有一个带有R代码的文件,它构建了几个数据帧,然后尝试将它们存储到Postgres数据库中。这通常会失败,失败的代码段如下 require ("RPostgreSQL") drv <- dbDriver("PostgreSQL") res <- dbConnect (drv, dbname = db, host = "localhost", port = 5432, user = "postgres", password = pw) t

我有一个带有R代码的文件,它构建了几个数据帧,然后尝试将它们存储到Postgres数据库中。这通常会失败,失败的代码段如下

require ("RPostgreSQL")

drv <- dbDriver("PostgreSQL")
res <- dbConnect (drv, dbname = db,
           host = "localhost", port = 5432,
           user = "postgres", password = pw)

table_name <- "gemeenten" 
print (c ("adding ", table_name))
if (dbExistsTable (con, table_name)) dbRemoveTable (con, table_name) ### Error!
result <- dbWriteTable (con, table_name, gemeenten)
并且错误发生在测试
dbExistsTable
时。当我调用
dbListConnections(PostgreSQL())
时,连接数每次增加一个,调用
dbDisconnect(con)
不会减少这个数字


我以前在尝试从.Profile文件创建驱动程序时遇到此错误,我可以通过删除
drv
变量并重新分配来解决此问题。我已经两次成功地创建了这个表,但我无法重建为什么会发生这种情况。有人知道我做错了什么吗?

我注意到的一件事是,当我开始寻找我的试验时,我开始出现这个错误。当我开始寻找信息源时,我犯了很多错误,我在Postgres状态屏幕上注意到这些连接仍然是开放的。使用后,我小心地尝试断开所有连接。在这方面,使用
tryCatch
块非常有用。使用
finally
分支关闭连接,卸载驱动程序并删除它们的变量。当你关闭来自Postgres的连接时,这是不够的,R仍然认为它们是打开的,并且会在有16个连接打开后拒绝任何连接尝试
dbListConnections(PostgreSQL())
返回一个列表,
disConnect
该列表的所有元素

这在一开始不起作用,我试图删除包“RPostgreSQL”,但也不起作用。我不得不从图书馆里手动杀死它。由于我是R和Postgres的新手,我怀疑我在安装过程中做错了什么。无论如何,请卸下并重新安装软件包。接下来重新启动Postgres服务器。在那之后,它起了作用


有点偏执,我同意,但在失去一晚睡眠后,我不想冒险:-)如果有人能更准确地找出问题的原因,我会很高兴地选择正确的答案。

我叫
sapply(dbListConnections(drv),dbDisconnect)
在我的脚本开始时,因为我无法思考如何在脚本失败或硬终止时关闭连接。这对我来说似乎是一个很好的解决方案,下次我必须在R中执行某些操作时,我将尝试这样做。
Error in postgresqlQuickSQL(conn, statement, ...) : 
  expired PostgreSQLConnection