Fehler beim Abrufen (Schlüssel): Lazy-Load-Datenbank

73

Ich weiß nicht, was los ist, alles hat super funktioniert, aber plötzlich bekam ich diese Fehlermeldung in der Dokumentation:

Fehler beim Abrufen (Schlüssel): Lazy-Load-Datenbank '...... descopl.rdb' ist beschädigt

Ich habe fast meinen gesamten Code entfernt und erneut erstellt und dann in Github veröffentlicht. Wenn ich jedoch das Paket mit dem anderen Laptop herunterlade, wird das Paket heruntergeladen und geladen, aber ich kann keine der Funktionen aufrufen, und in der Dokumentation wird dieser Fehler angegeben .

Ich weiß nicht, was das Problem verursacht hat. Ich verwende Sauerstoff, um die Dokumentation zu erstellen.

https://github.com/WilliamKinaan/descopl

Paolo RLang
quelle
1
Sie könnten einen Link zum Repo geben. und genau wie du die rdb erstellt hast
rawr
@rawr hier gehen Sie github.com/WilliamKinaan/descopl
Paolo RLang
1
Ich sehe keine größeren Probleme mit Ihrem r-Paket. Ich bin mir nicht sicher, warum Sie zwei Skripte mit Kopien derselben Funktionen haben - behalten Sie einfach das mit den Sauerstoffdokumenten. preprocessingsollte nicht auf oberster Ebene sein, verschieben Sie es auf inst/preprocessing. Und Sie sollten die Read-and-Delete-Me-Datei löschen. Ansonsten scheint Ihre .rdb nur beschädigt zu sein ... wie der Fehler sagt. Außerdem haben Sie nicht angegeben, wie Sie es erstellt haben
rawr

Antworten:

114

Es scheint, dass der Fehler auftritt, wenn das Paket nicht von R dekomprimiert werden kann (wie @rawr festgestellt hat, ist es beschädigt). Diese Lösungen haben bei mir funktioniert:

1) Überprüfen Sie die Erstellung der .Rdb Dateien auf mögliche Fehler

2) Starten Sie Ihre R-Sitzung neu (z. .rs.restartR()B. in RStudio).

3) Das Paket wurde möglicherweise auf Ihrem Computer installiert (obwohl es nicht funktioniert). Entfernen Sie es mit?remove.packages()

Rodrigo Zepeda
quelle
Meine Seite wurde neu gestartet und devtools::install_github('WilliamKinaan/descopl')funktioniert einwandfrei.
RYO ENG Lian Hu
6
In RStudio können Sie R neu starten, mit .rs.restartR()dem Ihre Sitzung (Variablen, Bibliotheken) wiederhergestellt wird, das .rdb' is corruptProblem jedoch behoben wird .
Jan-Glx
7

Ich hatte dieses Problem auch mit roxygen2. Konnte kein Problem mit einer meiner Funktionen sehen. Am Ende .rdbschien es das Problem zu lösen, die Datei zu löschen und dann roxygen2 zum Neuerstellen zu bringen.

Zfunk
quelle
6

Ich denke, die Erklärung dafür, was dies verursacht, ist hier. Es hängt mit devtools zusammen. Per @Zfunk

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

Starten Sie R. neu. Sehen Sie sich die Hilfe für das Paket erneut an. Fest!

בנימן הגלילי
quelle
2

Wenn Sie R-Studio verwenden: 1) Strg + Umschalt + F10, um die Sitzung neu zu starten 2) Tools -> Nach Paketaktualisierungen suchen -> Alle Pakete aktualisieren 3) Bibliothek (ggmap)

Das Problem ist gelöst.

tlgoa
quelle
1

Ich habe diesen Fehler erhalten, nachdem ich eine Bibliothek neu installiert habe, während eine andere R-Sitzung ausgeführt wurde.

Starten Sie einfach die vorhandenen R-Sitzungen neu, die für mich gelöst wurden (dh Sie werden ausgeführt .rs.restartR(), um die Sitzungen neu zu starten).

stevec
quelle
0

Ich habe diesen Fehler unter RStudio unter Mac OS erhalten - das Aktualisieren aller Pakete und das Neustarten der r-Sitzung haben den Trick getan.

ankurj
quelle
0

Grundsätzlich erfordern alle Antworten einen Neustart von R, um das Problem zu beheben, aber ich befand mich in einer Umgebung, in der ich R wirklich nicht neu starten wollte.

Ich poste hier eine etwas hackige Lösung, die Jim Hester in einem Fehlerbericht über das Korruptionsproblem beim verzögerten Laden vorgeschlagen hat.

Der Kern davon ist, dass das Paket möglicherweise einige restliche S3-Methoden enthält, die in der Sitzungsumgebung aufgeführt sind .__S3MethodsTable__.. Ich habe keine sehr systematische Methode, um festzustellen, welche S3-Methoden in dieser Umgebung von wo stammen, aber ich denke, ein guter Ausgangspunkt sind die printMethoden und die Suche nach S3methodRegistrierungen in den Paketen NAMESPACE.

Sie können diese S3-Methoden dann aus der .__S3MethodsTable__.Umgebung entfernen und es erneut versuchen, z

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

Möglicherweise müssen Sie auch einige DLLs entladen, wenn neue Nachrichten wie z

Kein solches Symbol glue_ im Paket /usr/local/lib/R/site-library/glue/libs/glue.so

Sie können überprüfen getLoadedDLLs(), welche solchen Dateien in Ihre Sitzung geladen werden. Im Fall von gluehier wurde das Problem durch Folgendes behoben:

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