2016-07-25 6 views
4

finde ich versuchte, eine App zu testen, und es wäre nicht zu starten, sondern hielt ich diesen Fehler:Mystery-Fehler: "Datenbank phenotype.db konnte nicht geöffnet werden, Datenbank ist gesperrt." Kann kein Info Online

Failed to open database '/data/data/com.google.android.gms/databases/phenotype.db'. 
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode 

ich keine Informationen über diesen Fehler online finden können, und keine Information darüber, was phenotype.db tut. Ich habe zu dem Zeitpunkt, als ich das getestet habe, nichts mit Datenbanken zu tun gehabt. Die einzigen Änderungen, die ich vorgenommen habe, waren Layout-bezogen.

Seltsamerweise geschah dies auf einer anderen App, die ich vor ein paar Wochen getestet habe. Es war eine andere App, die auf einem anderen Gerät von einem anderen Computer aus getestet wurde, und genau derselbe Fehler trat auf. In diesem Fall wechselte ich zu einem anderen Gerät und der Fehler ging weg. Aber jetzt hat das Gerät, auf das ich umgeschaltet habe, diesen Fehler.

Ist das eine Art von Glitch mit Google? Was kann ich tun, um das Problem zu beheben, damit ich meine App testen kann?

+0

Related: http://stackoverflow.com/questions/8360400/error-code-5-database -is-loc ked-when-using-a-contentprovider – Sufian

+0

Verwenden Sie Datenbanken in Ihrer App, überall? – Sufian

+0

Ich bekomme den gleichen Fehler seit gestern. Habe nichts gemacht, benutze nicht einmal SQLite. – ElDuderino

Antwort

1

Sie haben vergessen, die Datenbank zu schließen, oder ein anderer Thread schreibt in die Datenbank, wenn Sie versuchen, in die Datenbank zu schreiben. SQLite sperrt die Datenbank beim Schreiben, um eine Beschädigung zu vermeiden, wenn eine andere Entität versucht, zur selben Zeit in dieselbe Datenbank zu schreiben. Android zeigt nur einen Fehler in logcat an und die von Ihnen angegebene Anfrage wird einfach vergessen.
Empfehlungen:

  • Sie nur Zugriff auf die Datenbank von einem SQLOpenHelper
  • Sie sicherstellen, dass Sie alle Instanzen Datenbank Helfer schließen, wenn Sie mit ihnen
  • Sie sicherstellen, dass Sie immer Transaktionen enden mit endTransaction() auch beendet haben wenn Sie sie nicht erfolgreich setzen (dh wenn Sie sie zurückrollen möchten), falls Sie Transaktionen verwenden
Verwandte Themen