[Bioc-devel] Trouble modifying read-only ChipDb SQLite database
Amanda Hiser
@h|@er @end|ng |rom @om@|og|c@com
Wed Feb 22 22:04:31 CET 2023
Hello all,
I�m creating a ChipDb package for a protein-based assay. To generate a template package structure and the SQLite database file, I used `AnnotationForge::makeDBPackage()` with a "HUMANCHIP_DB" schema. I�m now trying to add new tables to the database by modifying the `zzz.R` file, following the instructions in the AnnotationForge vignette and the RSQLite vignette. However, I�m unable to write to the SQLite db file, even after modifying the permissions.
See below for a reprex reproducing the �readonly database� error I�m getting:
```
reprex::reprex({
suppressPackageStartupMessages(library(AnnotationForge))
suppressPackageStartupMessages(library(DBI))
# Preparing for package creation
df <- data.frame(probeID = c("probe1", "probe2", "probe3"),
entrezID = c("9570", "7421", "56"))
write.table(df, "example_ids.txt", sep = "\t",
col.names = FALSE, row.names = FALSE, quote = FALSE)
# Generating package
suppressMessages(AnnotationForge::makeDBPackage("HUMANCHIP_DB",
affy = FALSE,
prefix = "Example",
fileName = "example_ids.txt",
baseMapType = "eg", # Using Entrez Gene IDs
version = "0.1.0",
manufacturer = "Example",
chipName = "ExampleReprex",
author = "Example Author"))
# Connecting to database (based on code from package zzz.R file)
dbfile <- "Example.db/inst/extdata/Example.sqlite"
dbconn <- AnnotationDbi::dbFileConnect(dbfile)
# Testing connection
DBI::dbGetQuery(dbconn, 'SELECT * FROM probes')
file.access(dbfile, mode = 2) # -1 = failure
# Modifying permissions of SQLite database file and parent dir
Sys.chmod("Example.db/inst/extdata/Example.sqlite", "755")
Sys.chmod("Example.db/inst/extdata/", "755")
# 0 = success (file is writable)
file.access(dbfile, mode = 2)
DBI::dbIsReadOnly(dbconn) # Checking with another method
new_table <- data.frame(probeID = c("probe1", "probe2", "probe3"),
diseaseRisk = c("high", "low", "med"))
# Attempting to write new table to DB, using code example from RSQLite vignette
# https://cran.r-project.org/web/packages/RSQLite/vignettes/RSQLite.html
DBI::dbWriteTable(dbconn, "disease_risk", new_table)
})
```
According to the output of `file.access()` and `dbIsReadOnly()`, I should be able to write to the database. I�ve done some Googling to see if I�m missing a step, and it looks like others frequently run into this problem when either A) the parent directory (in this instance, `extdata`) doesn�t have write permissions, or B) the user attempting to perform the writing action is not the user that was granted writing permissions. I�ve attempted to address both, but neither has solved the problem. I�m still unable to write to the database. Is there a step that I�m missing or some other commonly overlooked factor that could be causing the database to be read-only? What specifically needs to be done to make the �.sqlite� file (in `inst/extdata`) writable?
Thank you!
Amanda
The information contained in this message is intended fo...{{dropped:8}}
More information about the Bioc-devel
mailing list