错误:无法将NA传递给R中sqldf包中的dbQuoteIdentifier()

Dwa*_*pta 11 r sqldf

Error: Cannot pass NA to dbQuoteIdentifier()
Run Code Online (Sandbox Code Playgroud)

另外:警告信息:

In field_types[] <- field_types[names(data)] :
  number of items to replace is not a multiple of replacement length
Run Code Online (Sandbox Code Playgroud)

这是我今天试图用sqldf包运行任何东西的错误信息.昨天运行的相同查询今天没有运行,我做错了什么?

小智 8

我有同样的问题:

Error: Cannot pass NA to dbQuoteIdentifier()
In addition: Warning message:
In field_types[] <- field_types[names(data)] :
number of items to replace is not a multiple of replacement length
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我注意到我在一个表中选择了两次相同的列:

table1<- sqldf("select columnA,
                       columnA,
                       keyA
                from tableA")
table2<- sqldf("select columnB,
                       keyB
                from tableB")

problematicMerge<- sqldf("select a.*, 
                                 b.* 
                          from tableA a join 
                               tableB 
                          on a.keyA = b.keyB")
Run Code Online (Sandbox Code Playgroud)

这是通过改变table1来删除重复的列来解决的(见下文: - 我怀疑其中一个列的别名有不同的名称也可以做到这一点):

table1<-sqldf("select columnA,
                      keyA
               from tableA")
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


Lar*_*ker 1

昨天我遇到了同样的问题,当时我突然无法将表从 R 上传到远程桌面上的 SQLite 数据库。

lghdb <- dbConnect(SQLite(), 'lgh.db'
dbWriteTable(lghdb, 'SrtrRisks', SrtrRisks)
Error: Cannot pass NA to dbQuoteIdentifier()...
Run Code Online (Sandbox Code Playgroud)

经过一段时间的摸索之后,我意识到这个错误是由于未完成(未提交)的事务导致所处理的 SQLite 数据库被“锁定”,这与我使用 SQLite 浏览器同时进行的工作有关。一旦我提交了待处理的事务,问题就消失了。

我想你也一定已经明白了这一点,因为你的帖子还没有后续。对于 RSQLite 人员来说,看看他们是否可以在这些情况下返回更有用的错误消息可能会很好。

拉里·亨斯克