2

通常,当我尝试从 SQL Server 数据库收集大量数据时,我会从nanodbc驱动程序中收到一条神秘的错误消息。例如,

library(dplyr)
res <- collect(tbl(con, "result"))

result_fetch(res@ptr, n, ...) 中的错误:nanodbc/nanodbc.cpp:2525:08S01:[Microsoft][ODBC Driver 11 for SQL Server]SSL Provider:[err

结果已清除

从那时起,我得到了错误

错误:'SELECT * FROM "result" AS "zzz13" WHERE (0 = 1)' nanodbc/nanodbc.cpp:1587: 08S01: [Microsoft] [ODBC Driver 11 for SQ

每当我尝试从数据库中的表中收集数据时。这一直持续到我重新启动我的 R 会话。

有没有人见过这种行为或者可以提供一种方法来解决它?

4

1 回答 1

4

肯定会发生此错误的一种情况:当表中有varchar类型列时。您可以通过单击 rstudio 中的连接窗格、转到相关表并检查列类型来检查这一点。

如果麻烦的列是varchar_col1,那么,

sometbl <- tbl(con, in_schema("schema_name","table_with_trouble"))
sometbl %>% head()

应该重现您的错误。

我不确定为什么会发生这种情况,但这里有一个解决方法:

sometbl <- tbl(con, in_schema("schema_name","table_with_trouble")) %>%
    mutate(alt_col1 = as.character(varchar_col1)) %>%
    select(-varchar_col1)
sometbl %>% head()

应该管用。

于 2018-08-22T14:38:37.690 回答