Ankündigung

Einklappen
Keine Ankündigung bisher.

database disk image is malformed

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    database disk image is malformed

    Hi,

    Ich bekomme seit kurzem folgende Meldung im LOG.

    Ich habe meine db auf eine externe SSD ausgelagert die an meinem Raspi via USB hängt.
    Kann ich die DB irgendwie reparieren? mein letztes Backup stammt von Mitte Dez.2023​

    mfg
    Markus

    P.S.: shng 1.9.5 mit SV3.4 (Mein Produktivsystem)

    Code:
    2024-02-05  12:35:59 ERROR    lib.db              Can not execute query: SELECT count(*) FROM log WHERE item_id = ? AND time >= ?; (args [7, 1704409200000]): database disk image is malformed
    2024-02-05  12:35:59 ERROR    plugins.database    Database: Error for query SELECT count(*) FROM log WHERE item_id = 7 AND time >= 1704409200000;: database disk image is malformed
    2024-02-05  12:35:59 ERROR    plugins.database.Remove old Method plugins.database.Remove old exception: database disk image is malformed
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/scheduler.py", line 690, in _task
        obj()
      File "/usr/local/smarthome/plugins/database/__init__.py", line 1544, in remove_older_than_maxage
        remaining = self.readLogCount(item_id, time_start=self._timestamp( time_end + datetime.timedelta(microseconds=1)))
      File "/usr/local/smarthome/plugins/database/__init__.py", line 847, in readLogCount
        result = self._fetchall("SELECT count(*) FROM {log} WHERE item_id = :id AND time >= :time_start;", params, cur=cur)
      File "/usr/local/smarthome/plugins/database/__init__.py", line 1713, in _fetchall
        tuples = self._query(self._db.fetchall, query, params, cur)
      File "/usr/local/smarthome/plugins/database/__init__.py", line 1734, in _query
        raise e
      File "/usr/local/smarthome/plugins/database/__init__.py", line 1731, in _query
        tuples = func(self._prepare(query), params, cur=cur)
      File "/usr/local/smarthome/lib/db.py", line 411, in fetchall
        self.execute(stmt, params, formatting=formatting, cur=c)
      File "/usr/local/smarthome/lib/db.py", line 332, in execute
        result = cur.execute(stmt, args)
    sqlite3.DatabaseError: database disk image is malformed
    2024-02-05  12:36:09 ERROR    lib.db              Can not execute query: INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (?,?,?,?,?,?,?); (args [43, 1707132911065, None, 5199.3408203125, 1, 2118, 1707132969494]): unable to open database file
    2024-02-05  12:36:09 ERROR    plugins.database    Database: Error for query INSERT INTO log(item_id, time, val_str, val_num, val_bool, duration, changed) VALUES (43,1707132911065,None,5199.3408203125,1,2118,1707132969494);: unable to open database file
    2024-02-05  12:36:09 WARNING  plugins.database    Problem dumping solar.current: unable to open database file
    2024-02-05  12:36:09 ERROR    lib.db              Can not execute query: SELECT MAX(val_num) FROM log WHERE item_id = ? AND time >= (SELECT COALESCE(MAX(time), 0) FROM log WHERE item_id = ? AND time < ?) AND time <= ? AND time + COALESCE(duration, ? - time) > (SELECT COALESCE(MAX(time), 0) FROM log WHERE item_id = ? AND time < ?)   (args [43, 43, 1707087609492, 1707132969493, 1707132969493, 43, 1707087609492]): database disk image is malformed
    2024-02-05  12:36:09 ERROR    plugins.database    Database: Error for query SELECT MAX(val_num) FROM log WHERE item_id = 43 AND time >= (SELECT COALESCE(MAX(time), 0) FROM log WHERE item_id = 43 AND time < 1707087609492) AND time <= 1707132969493 AND time + COALESCE(duration, 1707132969493 - time) > (SELECT COALESCE(MAX(time), 0) FROM log WHERE item_id = 43 AND time < 1707087609492)  : database disk image is malformed
    2024-02-05  12:36:09 ERROR    logics.Update_01_Heute In der Logik ist ein Fehler aufgetreten:
       Logik 'Update_01_Heute', Datei '/usr/local/smarthome/lib/db.py', Zeile 332
       function execute(), Exception: database disk image is malformed​​
    Zuletzt geändert von fuxl66; 05.02.2024, 12:54.

    #2
    Ich vermute, Du nutzt sqlite3 als Datenbank?

    Hast Du vor dem Auslagern der Datenbank Datei SmartHomeNG beendet? Falls nicht ist die von Dir erstellte Kopie korrupt.

    Hast Du noch die originale Datenbank Datei? Kannst Du auf die alte Datei zurück konfigurieren? Falls Ja und das database Plugin damit korrekt funktioniert, kannst Du SmartHomeNG beenden und eine neue Kopie erstellen.

    Falls nicht, kannst Du versuchen gemäß der SQLite Doku die Datenbank zu reparieren. WICHTIG: Daran denken, SmartHomeNG vorher zu beenden.

    Falls die Reperatur nicht funktioniert, hilft nur der Rückgriff auf Dein Backup
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Zitat von Msinn Beitrag anzeigen
      Ich vermute, Du nutzt sqlite3 als Datenbank?

      Hast Du vor dem Auslagern der Datenbank Datei SmartHomeNG beendet? Falls nicht ist die von Dir erstellte Kopie korrupt.

      Hast Du noch die originale Datenbank Datei? Kannst Du auf die alte Datei zurück konfigurieren? Falls Ja und das database Plugin damit korrekt funktioniert, kannst Du SmartHomeNG beenden und eine neue Kopie erstellen.

      Falls nicht, kannst Du versuchen gemäß der SQLite Doku die Datenbank zu reparieren. WICHTIG: Daran denken, SmartHomeNG vorher zu beenden.

      Falls die Reperatur nicht funktioniert, hilft nur der Rückgriff auf Dein Backup
      Vielen Dank für deine Antwort.

      Korrekt. Sqlite3.
      Das letzte Backup hatte ich kopiert nachdem ich shng beendet hatte. Seitdem habe ich nichts verändert an meiner DB konfig.

      Versucht shng meine alten Einträge zu löschen (maxage etc) oder woran kann das liegen?
      Sobald ich meinen Raspi neustarte läuft erstmal alles normal.

      Ich werde mich mal ans reparieren machen. Ich hoffe das klappt.

      Kommentar


        #4
        Zitat von fuxl66 Beitrag anzeigen
        Versucht shng meine alten Einträge zu löschen (maxage etc) oder woran kann das liegen?
        SQLite hält Teile der Datenbank im RAM. Sobalt sich also etwas verändert hat, z.B. ein Itemwert hat sich geändert und soll in die DB geschrieben werden, ist der Stand der Datei mit hoher Wahrscheinlichkeit nicht mehr konsistent.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Ich hab nun meine DB (ein Kopie) mit dem SQLite Browser geöffnet, die Datenbank komprimiert und eine Integritätsprüfung durchgeführt.
          Läuft nun seit 2 Tagen ohne weitere Fehler. Mal sehen ob das so bleibt. Danke für die Hilfestellung.

          Kommentar

          Lädt...
          X