取(键)错误: 延迟加载数据库

我不知道发生了什么,一切都很顺利,但突然我开始在文档上看到这个错误消息:

提取(键)错误: 延迟加载数据库“ ... ... descopl.rdb”是 腐败

我删除了几乎所有的代码,然后重新编译,然后发布到 Github,但是当我使用另一台笔记本电脑下载软件包时,软件包正在下载和加载,但是我不能调用任何函数,而且文档说明了这个错误。

我不知道是什么导致了这个问题,我正在使用 Roxygen 来生成文档。

Https://github.com/williamkinaan/descopl

84891 次浏览

I have had this problem with roxygen2 as well. Couldn't see any problem with any of my functions. In the end deleting the .rdb file and then getting roxygen2 to rebuild it seemed to solve the problem.

It seems that the error arises when the package cannot be decompressed by R (as @rawr established, it is corrupt). This solutions have worked for me:

1) Check for possible errors in the creation of the .Rdb files

2) Try restarting your R session (e.g. .rs.restartR() if in RStudio)

3) The package might have been installed in your computer (even though it does not work). Remove it using ?remove.packages()

I think the explanation for what is causing this is here. It's related to devtools. Per @Zfunk

cd ~/Rlibs/descopl/help
rm *.rdb

Restart R. Look at the help for the package again. Fixed!

If you are using R-studio: 1) ctrl+shift+f10 to restart r session 2) tools -> Check for package updates -> update all packages 3) library(ggmap)

Problem is solved.

I received this error after re-installing a library whilst another R session was running.

Simply restarting the existing R session(s) solved for me (i.e. running .rs.restartR() to restart the sessions)

I got this error on RStudio on mac OS - updating all the packages and restarting r session did the trick.

Basically all answers require restarting R to resolve the issue, but I found myself in an environment where I really didn't want to restart R.

I am posting here a somewhat hack-ish solution suggested by Jim Hester in a bug report about the lazy-load corruption issue.

The gist of it is that the package may have some vestigial S3 methods listed in session's .__S3MethodsTable__. environment. I don't have a very systematic way of identifying which S3 methods in that environment come from where, but I think a good place to start is the print methods, and looking for S3method registrations in the package's NAMESPACE.

You can then remove those S3 methods from the .__S3MethodsTable__. environment and try again, e.g.

rm(list="print.object", envir = get(".__S3MethodsTable__.", envir = baseenv()))

You may also need to unload some DLLs if some new messages come up like

no such symbol glue_ in package /usr/local/lib/R/site-library/glue/libs/glue.so

You can check getLoadedDLLs() to see which such files are loaded in your session. In the case of glue here, the following resolved the issue:

library.dynam.unload('glue', '/usr/local/lib/R/site-library/glue')