首页 > 解决方案 > R dbReadTable 没有返回这样的表错误

问题描述

我昨天成功运行了这段代码,但是今天,我收到了“没有这样的表”错误。我正在尝试使用 将 SQLite 数据库中的表(名为 tblLatjamInputs)中的数据提取到 R 中DBI::dbReadTable(),但它的行为就像该表不存在一样。

使用 SQLiteStudio

显示表存在的 SQLiteStudio 的屏幕截图

并分别命令行

显示该表存在于数据库中的命令行窗口的屏幕截图

在此处输入图像描述,

我可以看到该表确实存在并且表中有数据。

这是代码,既是写出来的,也是屏幕截图,所以你可以看到我得到的错误。

setwd("D:/hsm/databases")
db <- dbConnect(SQLite(), conn = "lookup_and_tracking.sqlite")
tblName <- "tblLatjamInputs"
df.full <- dbReadTable(db, tblName)
Error in result_create(conn@ptr, statement) : no such table: tblLatjamInputs

tblName当该行更改为此时,我得到了同样的错误:tblName <- dbQuoteIdentifier(db, "tblLatjamInputs")

R 中用于从 sqlite 数据库中检索表信息的代码截图以及由此产生的错误

dbListTables(db)返回character(0),并且dbListFields(db, "lkpSpecies")(数据库中的另一个表)也返回 no such table 错误。

我检查了数据库中表名周围没有空格。我还尝试从其他表中提取数据(以查看它是否只是该表的问题),但我得到了同样的错误。我曾多次尝试断开和重新连接到数据库,包括断开与数据库的连接,关闭 SQLiteStudio 和命令行,然后重新打开。我还尝试关闭所有内容,包括 R,重新加载项目,然后从头开始。我还尝试以相同的结果完全连接到不同的数据库(R 建立了连接,但似乎找不到任何表)。我完全感到困惑,因为正如我所提到的,所有这些在命令行中都可以正常工作,而且我昨天使用相同的数据库、表和代码行进行了此操作,并且工作正常。

标签: rsqlitedbirsqlite

解决方案


利用

db <- dbConnect(SQLite(), "lookup_and_tracking.sqlite")

问题是文件名参数没有命名conn=;它是dbname=默认值"",它会创建一个新的空数据库。


推荐阅读