我正在使用RPostgreSQL和sqldf包执行SQL。
连接:
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname="dbname",host="host",port=5432,user="usr",password="pwd")
然后我构建了一个非常复杂的SQL语句,最后我有(vSQL
是SQL select语句):
vSQLDF <- sqldf(vSQL, connection=con)
现在我收到以下错误:
Error in dbPreExists && !overwrite : invalid 'x' type in 'x && y'
我无法创建任何可重复的示例,我只能说:
sqldf("select * from any_table, connection=con")
inSQL = paste(rep("select 1::int ",10000),collapse=" union all ")
,导致不同的错误:RS-DBI driver: (could not Retrieve the result : ERROR: stack depth limit exceeded
知道这个错误意味着什么吗?
会话信息:
> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=cs_CZ.UTF-8 LC_NUMERIC=C LC_TIME=en_GB.UTF-8 LC_COLLATE=cs_CZ.UTF-8 LC_MONETARY=en_GB.UTF-8
[6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] tcltk stats graphics grDevices utils datasets methods base
other attached packages:
[1] lattice_0.20-13 sqldf_0.4-6.4 RSQLite.extfuns_0.0.1 RSQLite_0.11.2 chron_2.3-43 gsubfn_0.6-5
[7] proto_0.3-10 RPostgreSQL_0.3-3 DBI_0.2-5
loaded via a namespace (and not attached):
[1] grid_2.15.2 tools_2.15.2
的PostgreSQL:
PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit
RStudio 0.97.332
答案 0 :(得分:1)
如果没有代码和适量的背景细节,这只是一个猜谜游戏,但我看到你没有配置sqldf使用不同的驱动程序而不是默认的适当选项。您没有提到您已遵循sqldf page at googlecode.com:
中与PostgreSQL相关的所有说明在sqldf代码中有一行:
if (request.con) dbPreExists <- attr(connection, "dbPreExists")
您可以通过将连接对象提供给类似的调用来获得洞察力:
dbPreExists <- attr(connection, "dbPreExists") #see error gets thrown.
您也可以使用以下方法调试sqldf:
debug(sqldf) # then repeat operation
将启动浏览器会话,您可以单步执行该过程。
答案 1 :(得分:0)
我不认为手动连接曾经用postgres测试过。使用 如果你想使用它们,直接使用RPostgreSQL。
手动和自动连接在sqldf中使用sqlite和 自动连接在sqldf中与RPostgreSQL一起工作。
查看他原来的帖子,了解整个回复。