Jaki jest objaw? W logach Domoticz widzimy informację
’…Database is malformed…’.
U mnie konkretnie był problem z LightingLog – odpowiada on za przetrzymywanie danych archiwalnych o czujnikach – błąd był przy nocnym czyszczeniu tej tabeli. A to skutkowało zwiększoną wielkością bazy danych. U Was może być różnie. Jest to w końcu baza plikowa, bez serwisu który dba o integralność danych, itp.
Najpierw
sudo apt-get install sqlite3
Trzeba też zatrzymać serwis Domoticz
sudo service domoticz stop
Następnie
cd domoticz
sqlite3 domoticz.db
pragma integrity_check;
Nie jest dobrze! Błędy, jak widać, są i to dość dużo. Spróbujemy poradzić sobie z nimi na razie najprostszą metodą – zrzucenie struktury bazy i danych do pliku ponowne załadowanie. W 99% przypadków powinno pomóc.
Skoro jest źle – trzeba działać!
Startujemy:
sqlite3 domoticz.db
.output dump.sql
.dump
.exit
Teraz załadujemy ten plik już do nowej bazy. Jak to może nam pomóc? Ano wyeksportowana została poprawna struktura tabel oraz danych z bazy, także teraz tą dobrą wrzucimy do nowej. Wszystkie dane powinny zostać poprawne. W moim konkretnym przypadku tak było – mam nadzieję, że i u Was nie będzie to nic poważniejszego.
Załadowaliśmy nasze dane do bazy domoticz1.db.
Sprawdźmy, dla pewności, czy faktycznie nam to pomogło.
Wygląda dobrze, wystarczy zastąpić domoticz.db plikiem domoticz1.db i uruchomić domoticz.
sudo service domoticz start