R dbReadTable не возвращает такой ошибки таблицы - PullRequest
2 голосов
/ 11 февраля 2020

Вчера я успешно выполнил этот бит кода, но сегодня я получаю ошибку «нет такой таблицы». Я пытаюсь получить данные в таблице (с именем tblLatjamInputs) из базы данных SQLite в R, используя DBI::dbReadTable(), но она действует так, как будто таблица не существует.

Использование SQLiteStudio

screenshot of SQLiteStudio showing the existence of the table

и отдельно командной строки

screenshot of command line window showing that table exists in the database

enter image description here,

Я вижу, что таблица действительно существует и что в таблице есть данные.

Вот код, оба записаны и в виде скриншота, чтобы вы могли увидеть ошибку, которую я получаю.

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")

screenshot of code in R to retrieve table information from an sqlite database and the resulting error

dbListTables(db) возвращает character(0), а dbListFields(db, "lkpSpecies") (другая таблица в БД) также возвращает ошибку отсутствия такой таблицы.

Я проверил, что в имени таблицы нет пробелов вокруг имени таблицы база данных. Я также пытался извлечь данные из других таблиц (чтобы увидеть, если это просто проблема с этой таблицей), но я получил ту же ошибку. Я попытался отключиться и повторно подключиться к базе данных несколько раз, включая отключение от базы данных, закрытие SQLiteStudio и командной строки, а затем повторное открытие. Я также попытался закрыть все, включая R, перезагрузить проект и начать заново с нуля. Я также попытался соединиться с другой базой данных с теми же результатами (R устанавливает соединение, но не может найти какие-либо таблицы). Я полностью сбит с толку, потому что, как я уже говорил, все это прекрасно работает в командной строке, и я сделал это вчера с той же базой данных, таблицей и строками кода, и это работало нормально.

1 Ответ

2 голосов
/ 11 февраля 2020

Использовать

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

Проблема в том, что параметр имени файла не назван conn=; Это dbname= и по умолчанию "", что создает новую пустую базу данных.

...