RSQLite не создает локальную базу данных

Репрекс:

con <- DBI::dbConnect(RSQLite::SQLite(), path = "test.sqlite")
dbWriteTable(con, "mtcars", mtcars)
dbListTables(con)
[1] "mtcars"
dbDisconnect(con)

Когда я вернусь:

con <- DBI::dbConnect(RSQLite::SQLite(), path = "test.sqlite")
dbListTables(con)
character(0)

Я думал, что dbConnect должен создать базу данных, если ее не существует. Я не знаю, что происходит.


person skurp    schedule 02.08.2018    source источник
comment
Оба блока кода создают базу данных во временном файле.   -  person krlmlr    schedule 02.08.2018


Ответы (1)


Чтобы создать локальную базу данных, вам по-прежнему необходимо указать параметры, характерные для вашего компьютера. Это решило проблему для меня:

con <- DBI::dbConnect(RSQLite::SQLite(),
                  user = 'root',
                  password = '',
                  dbname = 'test.sqlite',
                  host = 'localhost')

Это плохо задокументировано, если вы не очень хорошо разбираетесь в базах данных SQLite. Кажется, база данных создавалась только в памяти. Может быть, кто-то еще может объяснить это, поскольку я думаю, что предупреждения помогут пользователям в этой ситуации.

person skurp    schedule 02.08.2018
comment
Я не думаю, что user, password и host здесь сильно помогают. dbname — параметр, который необходимо установить вместо path. См. ?RSQLite::"dbConnect,SQLiteDriver-method" . - person krlmlr; 02.08.2018