【问题标题】:Using tbl with in_schema creating syntax error using FreeTDS使用带有 in_schema 的 tbl 使用 FreeTDS 创建语法错误
【发布时间】:2018-07-25 12:20:49
【问题描述】:

我正在尝试创建一个惰性表,以便在 Ubuntu 上的 Shiny Server 中使用 dplyr sql 后端,使用 tbl 会引发语法错误。

library(dbplyr)
library(dplyr)
library(pool)
library(DBI)

pool <- dbPool(odbc::odbc(),
               driver = "FreeTDS", 
               server = "server", 
               database = "database", 
               uid = "uid", 
               pwd = "password", 
               port = 1433)
data <- tbl(pool, in_schema("schema.dbo", "table"))

Error: <SQL> 'SELECT *
    FROM schema.dbo.table AS "zzz1"
    WHERE (0 = 1)'
     nanodbc/nanodbc.cpp:1587: 42000: [FreeTDS][SQL Server]Incorrect syntax near 'zzz1'.

代码在Windows环境下运行无误,生成的SQL语句在SQL中执行成功。当来自shiny的执行查询出现在日志中时,池对象也已成功连接。

我还检查了 odbc.ini 和 odbcinst.ini 中的连接信息是否正确。

在使用带有 FreeTDS 驱动程序的 dplyr 来处理 SQL Server 时是否存在已知问题?

【问题讨论】:

    标签: r shiny dplyr dbplyr


    【解决方案1】:

    这是一个较晚的回复,但希望对某人有所帮助。

    请参阅此issue on the dbplyr github 以获得答案。

    运行 DBI::dbExecute(pool, "SET QUOTED_IDENTIFIER ON") 应该可以解决您的问题。

    感谢 JakeRuss 和 hadley(在上面的 github dbplyr 问题链接中)在调试此问题方面所做的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2015-08-13
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      相关资源
      最近更新 更多