[erledigt] sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

[erledigt] sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von bullgard » 20.01.2022 22:28:44

Hallo debianforum.de,
[Debian 10.2 stable, Xfce4.16]
Eine SQL3-Datenbank mit einer Datei. Ich nenne sie hier db1. Die zugehörige Projektdatei heißt db1.sqbpro. Während des Editierens von db1 fror heute der Rechner ein. Die Betätigung der magischen SysRq-Taste hatte keine Wirkung. (Dieser Fehler tritt auch bei anderen sqlite-Benutzern auf. Sie haben darüber im Internet berichtet.)
Bisher konnte ich nach Rechner auschalten, Rechner einschalten , Aufruf der Projektdatei db1.sqbpro die Datenbank db1 öffnen, den fehlerhaften Record finden und reparieren.
Heute aber nicht. Der Aufruf der Projektdatei db1.sqbpro öffnet nicht die Datenbank db1. Es erscheint ein Fehlerdialogfenster mit der Mitteilung
Datenbank konnte nicht geöffnet werden. Grund: attempt to write a readonly database.
Im Gegensatz zu allen früheren Einfriervorgängen legte der Rechner heute eine dritte Datei an. Ich nenne sie db1-journal. Größe: 8,5 KiB mit der Eigenschaft »SQLIte Rollback Journal«.
Den Inhalt des »SQLIte Rollback Journal« kann ich mir im mc-Viewer ansehen. Er besteht im wesentlichen aus drei Textblöcken mit Leerzeichen und (wahrscheinlich) ein paar Steuerzeichen dazwischen.
Zwei Textblöcke könnten von den 2 Records stammen, die ich als letzte vor dem Einfrieren editiert hatte.
Der dritte Textblock ist die Datenstruktur der (einzigen) Tabelle der Datenbank db1.
Wie repariert man die Datenbank db1 mit Hilfe des SQLIte Rollback Journals? Lesen von https://www.sqlite.org/tempfiles.html hat mich nicht erleuchtet. Dort fehlt mir ein Rezept zur Vorgehensweise.
Meine zweite Idee wäre, das Flag »readonly database« auf »read/write database« zu toggeln. Wie macht man das? Die Datei db1.sqbpro hat das Format XML Version 1.0. Die kann ich lesen.
MfG
bullgard
Zuletzt geändert von bullgard am 09.02.2023 10:20:18, insgesamt 1-mal geändert.

pferdefreund
Beiträge: 3791
Registriert: 26.02.2009 14:35:56

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von pferdefreund » 21.01.2022 11:09:03

Schau mal nach, ob es für sqlite ein Recovery-Tool gibt. Gabs schon in den 70ern für Vsam unter Dos/VSE auf der IBM S/370.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von schorsch_76 » 21.01.2022 15:43:31

bullgard hat geschrieben: ↑ zum Beitrag ↑
20.01.2022 22:28:44
Hallo debianforum.de,
[Debian 10.2 stable, Xfce4.16]
Eine SQL3-Datenbank mit einer Datei. Ich nenne sie hier db1. Die zugehörige Projektdatei heißt db1.sqbpro. Während des Editierens von db1 fror heute der Rechner ein. Die Betätigung der magischen SysRq-Taste hatte keine Wirkung. (Dieser Fehler tritt auch bei anderen sqlite-Benutzern auf. Sie haben darüber im Internet berichtet.)
Bisher konnte ich nach Rechner auschalten, Rechner einschalten , Aufruf der Projektdatei db1.sqbpro die Datenbank db1 öffnen, den fehlerhaften Record finden und reparieren.
Heute aber nicht. Der Aufruf der Projektdatei db1.sqbpro öffnet nicht die Datenbank db1. Es erscheint ein Fehlerdialogfenster mit der Mitteilung
Datenbank konnte nicht geöffnet werden. Grund: attempt to write a readonly database.
Im Gegensatz zu allen früheren Einfriervorgängen legte der Rechner heute eine dritte Datei an. Ich nenne sie db1-journal. Größe: 8,5 KiB mit der Eigenschaft »SQLIte Rollback Journal«.
Den Inhalt des »SQLIte Rollback Journal« kann ich mir im mc-Viewer ansehen. Er besteht im wesentlichen aus drei Textblöcken mit Leerzeichen und (wahrscheinlich) ein paar Steuerzeichen dazwischen.
Zwei Textblöcke könnten von den 2 Records stammen, die ich als letzte vor dem Einfrieren editiert hatte.
Der dritte Textblock ist die Datenstruktur der (einzigen) Tabelle der Datenbank db1.
Wie repariert man die Datenbank db1 mit Hilfe des SQLIte Rollback Journals? Lesen von https://www.sqlite.org/tempfiles.html hat mich nicht erleuchtet. Dort fehlt mir ein Rezept zur Vorgehensweise.
Meine zweite Idee wäre, das Flag »readonly database« auf »read/write database« zu toggeln. Wie macht man das? Die Datei db1.sqbpro hat das Format XML Version 1.0. Die kann ich lesen.
MfG
bullgard
Bei sqlite3 ist die spdpro Datei nur für den Browser. Sie enthält Metadaten die in der eigentlichen DB nichts verloren haben. Fenstergrößen etc pp.
Die eigentliche Datenbank ist die "*.db" oder "*.sqlite3". Diese Datei kannst du auch direkt im Sqlite3browser öffnen.

Wir geht die "Reparatur" wenn nach einem Crash noch ein Journal vorhanden ist? EInfach mit der sqlite Bibliothek (CLI,Browser oder deine Anwendung) die Datei öffnen.
Sollte ein Journal vorhanden sein, wird es zurück gerollt und die DB sollte RW sein.

Eventuell ist deine Datei beschädigt. Das hab ich bisher selbst noch nie gehabt und ich nutze das auf sehr vielen Anlagen. Diese Rechner haben viele abrupte Neustarts durch unsachgemäße Bedienung (Hauptschalter aus ohne Anwendung zu beenden) überlebt.

Das [1][2][3][4] mag dir helfen das Problem zu identifizieren. Sollte dein Problem hier nicht aufgeführt sein und der Rechner immer wieder so unerwartet einfrieren, würde ich auf eine Hardwaredefekt untersuchen. CPU Lüfter, Netzteil, HDD, SSD, etc....

[1] https://sqlite.org/howtocorrupt.html
[2] https://sqlite.org/cli.html
[3] https://sqlite.org/sqlanalyze.html
[4] https://sqlite.org/atomiccommit.html

Ich arbeite bei sqlite3 mit dem WAL Journal. Aber das nur am Rande ....

bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von bullgard » 21.01.2022 16:19:27

Hallo pferdefreund,
ich habe ein paar SQLite Recovery Tool-Treffer gefunden. Die meisten waren für Windows. Aber ein Artikel in stackoverflow ist bisher am vielversprechendsten.
Bei mehr Zeit mache ich weiter.
Gruß

bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von bullgard » 31.01.2022 16:10:55

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
21.01.2022 15:43:31
Bei sqlite3 ist die spdpro Datei nur für den Browser. Sie enthält Metadaten die in der eigentlichen DB nichts verloren haben. Fenstergrößen etc pp.
Das kann stimmen. Aber den für mich entscheidenden Punkt habe ich in der SQLIte-Dokumentation nicht entdeckt: Ich habe die journal-Datei umbenannt (ein Sternchen angefügt). Dann konnte ich die reine SQL3-Datenbankdatei aufrufen und editieren (und korrigieren). Nun funktioniert's wieder.
schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
21.01.2022 15:43:31
Ich arbeite bei sqlite3 mit dem WAL Journal. Aber das nur am Rande ....
Einen Artikell über WAL habe ich schon in der Dokumentation gefunden. Ich werde das gelegentlich ausprobieren.
Gruß
bullgard

bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von bullgard » 19.10.2022 10:23:51

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
21.01.2022 15:43:31

Das [1][2][3][4] mag dir helfen das Problem zu identifizieren. Sollte dein Problem hier nicht aufgeführt sein und der Rechner immer wieder so unerwartet einfrieren, würde ich auf eine Hardwaredefekt untersuchen. CPU Lüfter, Netzteil, HDD, SSD, etc....

[1] https://sqlite.org/howtocorrupt.html
[2] https://sqlite.org/cli.html
[3] https://sqlite.org/sqlanalyze.html
[4] https://sqlite.org/atomiccommit.html
Ich habe jetzt das Clickpad im Verdacht: Es klappert ewas, wenn man an der unteren Kante nur ganz leicht aufdrückt. Bei einem zweiten fast baugleichen Laptoprechner tritt dieses Klappern nicht auf. Das Clickpad heißt wohl »Elantech Touchpad ETPS/2« und ist aus Taiwan. Die mechanische Konstruktion scheint aus einer dünnen Platte zu bestehen, die an der linken oberen und der rechten oberen Ecke kippbar aufgehängt ist.
Das Klappern ist wohl auch dafür verantwortlich, daß der Cursor beim Editieren eines Feldes einer Tabelle öfter einmal ungewollt in ein anderes angezeigtes Tabellenfeld springt und dabei manchmal Daten mitreißt.
Ich muß deshalb das Clickpad sehr kontrolliert bedienen.

Gruß
bullgard

bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

Re: sqlitebrowser: Einfrieren/Absturz "Attempt to write a readonly database"

Beitrag von bullgard » 09.02.2023 10:19:33

Ich habe eine drahtlose Maus gekauft und installiert. Seither tritt die beschriebene Fehlermeldung nicht mehr auf. Wohl weil ich das Clickpad viel weniger benutzen muß.

Antworten