[resolu]erreur sql query-->certains logs ne fonctionnent plus

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
frenchyyii
Messages : 310
Inscription : 16 oct. 2015, 06:29

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par frenchyyii »

Je deterre, même souci de mon côté que je n'arrive pas à solutionner. Ca me gave...
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par patrice »

Bonjour
frenchyyii a écrit : Ca me gave...
Tu as bien avancé avec cette remarque !
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
frenchyyii
Messages : 310
Inscription : 16 oct. 2015, 06:29

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par frenchyyii »

Ca me gave car tout tombe en panne en ce moment lol :D
frenchyyii
Messages : 310
Inscription : 16 oct. 2015, 06:29

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par frenchyyii »

Après m'être bien emmer... avec l'addon firefox, visual studio et différents softs, en extrayant le sql, en le modifiant etc ... finalement il semblerait que j'ai réussi à réparer ma base tout simplement grace à cette tout bête manip (merci à l'auteur d'ailleurs)
https://community.spiceworks.com/how_to ... e-database

Sous windows
Le lien des softs à télécharger est exactement celui-ci:
http://www.sqlite.org/2017/sqlite-tools ... 170000.zip

Placez directement votre fichier domoticz.db (que vous téléchargez par ex avec wincsp après avoir stoppé DZ (sudo service domoticz stop) dans le directory où il y a les exécutables.
Renommez le en domoticzMF.db

Pour aller vite et vérifier l'intégrité lancez en double cliquant sqlite3.exe
puis tappez:
.open domoticzMF.db
pragma check_integrity;

La réponse vous affichera les erreurs de la base, il faut donc la réparer. Si pas d’erreurs ca affiche ok.

Pour réparer: lancer une commande dos avec CMD, naviguez jusqu'au directory dans lequel se trouvent la base et les softs (avec cd "directory suivantdans lequel vous voulez aller", google est votre pour les commandes dos)
Une fois dans le directory:
Exécutez la commande suivante:
echo .dump | sqlite3.exe domoticzMF.db > domoticzextrait.sql

Vous allez voir apparaitre un nouveau fichier domoticzextrait.sql qui est la base directement en sql issue de notre fichier malformé.

On va alors réintégrer cette base sql dans un fichier .db directement utilisable sous domoticz.
Lancez la commande:
sqlite3.exe -init domoticzextrait.sql domoticz.db

Un nouveau fichier domoticz.db devrait apparaitre dans le dossier avec une taille différente de domoticzMF.db, c'est la nouvelle base réparée que l'on va pouvoir directement intégrer à notre DZ.

Repartez dans wincsp et renommez la base corrompu qui se trouve toujours dans domoticz en doomoticzpoubelle par ex ou même supprimez le.
Renvoyez la base domoticz.db que vous avez recrée et qui se trouve dans le directory avec les soft.

Relancez DZ "sudo service domoticz start" et vérifiez vos logs ca devrait être bon.
frenchyyii
Messages : 310
Inscription : 16 oct. 2015, 06:29

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par frenchyyii »

Bon j'ai résolu des souci de base malformée qui entrainaient la perte de mes logs a court terme mais restent des soucis de vacuum et du coup impossible de faire les backups.
J'ai pourtant étendu tmpfs à 32M mais ca ne suffit pas. :cry:
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par Phebus06 »

Ohhh MMMMMEEERRRRCCCIIIII....

:D :D :D :D :D :D :D :D :D :D :D :D :D :D

J'ai enfin réussi à restaurer ma base de donnée qui n'avait que des problèmes d'erreur sql à chaque changement d'état d'un devis et évidement aucunes données dans les logs de ces devis.

Mais maintenant tout refonctionne parfaitement pour l'instant et je n'ai plus aucune ligne ROUGE pas belle :D

MMMMEEERRRCCCIIIII
klarf
Messages : 136
Inscription : 17 mars 2018, 09:00

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par klarf »

Hello, je sais je déterre le sujet de loin, mais ça ma sauvé !

J'avais ces erreurs :

Code : Tout sélectionner

2021-12-15 12:25:00.315 Error: SQL Query("INSERT INTO Percentage (DeviceRowID, Percentage) VALUES ('759', '15')") : database disk image is malformed
2021-12-15 12:25:00.335 Error: SQL Query("INSERT INTO Percentage (DeviceRowID, Percentage) VALUES ('1042', '100')") : database disk image is malformed
2021-12-15 12:25:00.336 Error: SQL Query("INSERT INTO Percentage (DeviceRowID, Percentage) VALUES ('1044', '15')") : database disk image is malformed
2021-12-15 12:25:00.340 Error: SQL Query("DELETE FROM Temperature WHERE strftime('%s',datetime('now','localtime')) - strftime('%s',Date) > (SELECT p.nValue * 86400 From Preferences AS p WHERE p.Key='5MinuteHistoryDays')") : database disk image is malformed
2021-12-15 12:25:00.365 Error: SQL Query("DELETE FROM Meter WHERE strftime('%s',datetime('now','localtime')) - strftime('%s',Date) > (SELECT p.nValue * 86400 From Preferences AS p WHERE p.Key='5MinuteHistoryDays')") : database disk image is malformed
2021-12-15 12:25:00.378 Error: SQL Query("DELETE FROM Percentage WHERE strftime('%s',datetime('now','localtime')) - strftime('%s',Date) > (SELECT p.nValue * 86400 From Preferences AS p WHERE p.Key='5MinuteHistoryDays')") : database disk image is malformed
2021-12-15 12:26:40.311 Error: SQL Query("SELECT Temperature, Chill, Humidity, Barometer, Date, SetPoint FROM Temperature WHERE (DeviceRowID==33) ORDER BY Date ASC") : database disk image is malformed
2021-12-15 12:26:40.353 Error: SQL Query("SELECT MIN(Temperature), MAX(Temperature), MIN(Chill), MAX(Chill), AVG(Humidity), AVG(Barometer), AVG(Temperature), MIN(SetPoint), MAX(SetPoint), AVG(SetPoint) FROM Temperature WHERE (DeviceRowID==33 AND Date>='2021-12-15')") : database disk image is malformed
2021-12-15 12:26:40.401 Error: SQL Query("SELECT MIN(Temperature), MAX(Temperature), MIN(Chill), MAX(Chill), AVG(Humidity), AVG(Barometer), AVG(Temperature), MIN(SetPoint), MAX(SetPoint), AVG(SetPoint) FROM Temperature WHERE (DeviceRowID==33 AND Date>='2021-12-15')") : database disk image is malformed
2021-12-15 12:26:46.565 Error: SQL Query("DELETE FROM Temperature WHERE (DeviceRowID=='33') AND (Date>='2021-12-15 03:20:00') AND (Date<='2021-12-15 03:22:00')") : database disk image is malformed
2021-12-15 12:26:46.716 Error: SQL Query("SELECT Temperature, Chill, Humidity, Barometer, Date, SetPoint FROM Temperature WHERE (DeviceRowID==33) ORDER BY Date ASC") : database disk image is malformed
2021-12-15 12:26:46.728 Error: SQL Query("SELECT MIN(Temperature), MAX(Temperature), MIN(Chill), MAX(Chill), AVG(Humidity), AVG(Barometer), AVG(Temperature), MIN(SetPoint), MAX(SetPoint), AVG(SetPoint) FROM Temperature WHERE (DeviceRowID==33 AND Date>='2021-12-15')") : database disk image is malformed
2021-12-15 12:26:46.745 Error: SQL Query("SELECT MIN(Temperature), MAX(Temperature), MIN(Chill), MAX(Chill), AVG(Humidity), AVG(Barometer), AVG(Temperature), MIN(SetPoint), MAX(SetPoint), AVG(SetPoint) FROM Temperature WHERE (DeviceRowID==33 AND Date>='2021-12-15')") : database disk image is malformed
Grace à frenchyyii et "sqlite-tools-win32-x86-3170000" j'ai pu faire une nouvelle BDD avec plus aucune erreurs (dans les graphiques, j'avais des bugs un peu partout sur les température surtout : manque des valeurs journalières, valeurs en double sur le graphique, ...)
ccyril91
Messages : 46
Inscription : 23 déc. 2019, 22:37
Localisation : Ile de france

Re: [resolu]erreur sql query-->certains logs ne fonctionnent plus

Message par ccyril91 »

Bonjour à la communauté, et Meilleurs voeux

Petit update de ce tuto, car :
- je suis en docker, il n'y plus de notion de "service"
- je n'aime pas installer des produits tiers pour faire du debug

J'ai donc adopté la méthodo suivante :
1°) export de la bdd depuis le GUI Domoticz
2°) réparation de la bdd sur windows, avec sqlite
3°) import de la bdd depuis le GUI Domoticz


Mode opératoire pour vérifier l'intégrité et réparer la BDD (poste windows) :
----------------------------------------------------------------
Aucune installation nécessaire sur windows, pas besoin de modifier le path puis que l'on travaille dans le même répertoire

Dans un répertoire <sqlite3>, télécharger sqlite3 sur https://www.sqlite.org/download.html
(2 fichiers zip pour windows), dezipper les fichiers (sqlite3.dll, sqlite3.exe, sqlite3.def, ...) et les mettre à la racine du répertoire <sqlite3>

copier dans <sqlite3> le fichier bdd exporté depuis Domoticz
"mabdd.db"

ouvrir une fenêtre cmd
se placer dans le répertoire <sqlite3>

ouvrir la bdd
"sqlite3 mabdd.db"

vérifier les éventuelles erreurs
"pragma integrity_check"

et pas "check_integrity", comme dans le post précédent :o

-> si la structure du fichier est ok, ça retourne "ok". Et vous pouvez vous arrêter là, ce tuto ne va pas résoudre vos soucis
-> sinon ça énumère les erreurs mais ne les corrige pas

si erreurs : toujours dans sqlite
".output mabdd.sql"
".dump"

ça met un peu de temps (qqs minutes), regarder dans le gestionnaire de tâches que le processus travaille
la taille du fichier .sql généré doit être voisine du fichier .db

si pb -> désactiver l'antivirus (j'ai eu le cas avec malwarebyte)
".exit"

Puis pour regénérer le fichier <newbdd.db>
"sqlite3 -init mabdd.sql newbdd.db"

Idem ça prend qqs minutes

Par acquis de conscience vous pouvez refaire l'integrity_check sur la nouvelle bdd.


Voila, il ne reste plus qu'à importer <newbdd.db> via le GUI Domoticz 8-)
====================================================
Domoticz ver: 2022.2 (build 14779) / Docker sous Synology DSM 6.2.4 up6
Python Version: 3.7.3 [GCC 8.3.0]

Z-Wave via USB Key SA 413. Zigate+ -USB- pour Zigbee.
Répondre