Base de donnée SQL

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.
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Base de donnée SQL

Message par david86 »

Bonsoir à tous,
Je viens à vous suite à une mauvaise manip de ma part, la mise à jour de domoticz... Mais j'ia fait une copie complète de ma carte sd avant quoi que ce soit, donc je reflash avec cette sauvegarde, impeccable je retrouve tout. Device, capteur, service de notification...
Je vais voir dans les logs et là, plein d'erreur de ce style :

Code : Tout sélectionner

2023-02-28 23:27:18.964 Error: SQL Query("SELECT Value FROM Meter WHERE (DeviceRowID='613' AND Date>='2023-02-28') ORDER BY Date LIMIT 1") : database disk image is malformed
ou encore

Code : Tout sélectionner

2023-02-28 23:20:00.725 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
J'ai farfouillé sur le net, j'ai trouvé qu'il s'agit de pb dans la BDD, qui est en sql, donc j'installe sqlite3 et je lance un integrity check avec :
sqlite3 /home/pi/domoticz/domoticz.db "pragma integrity_check;"

J'ai bien des erreurs, je fais la même manip avec un autre logiciel, je retrouve les mêmes erreurs, mais finalement, que puis-je en faire svp ?

J'ai lu des manip de .dump mais je ne comprend pas ce que ça fait et ce qu'il faut en faire...

Code : Tout sélectionner

cd ~
cd domoticz
sqlite3 domoticz.db
.mode insert
.output dump.sql
.dump
.exit
sqlite3 -init dump.sql repaired.db
Un grand merci à ceux qui pourront me guider.
Bonne soirée,
2023-02-28 23_20_56-DB Browser for SQLite - C__Users_david_Downloads_domoticz.db.png
2023-02-28 23_20_56-DB Browser for SQLite - C__Users_david_Downloads_domoticz.db.png (72.81 Kio) Consulté 828 fois
2023-02-28 23_20_29-Window.png
2023-02-28 23_20_29-Window.png (53.43 Kio) Consulté 828 fois
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Base de donnée SQL

Message par Keros »

Ce sont des commandes à faire pour essayer de traiter ta base de donnée. Surtout, fais le sur une copie de ta base de donnée.

A la fin, cela créer un repaired.db avec ta base de donnée réparée. Tu peux tester ce fichier. S'il est bon, tu peux remplacer celui de DomoticZ.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Base de donnée SQL

Message par david86 »

Bonjour Keros,
Merci pour ton intérêt.
Quand tu dis ce sont des manip à faire, mais en traduction newbee, ça veut dire quoi :
Page 1739btreeinitpage() ??
On tree page 846 cell119 ?
Bien sûr que je ferais ces manip sur une copie de la base de données.
Cette copie d’ailleurs et cette manip, je peux la faire sur une copie que j’aurai téléchargé sur mon Pc par exemple ?
Pas besoin que ce fichier domoticz.db soit sur le raspberry ?
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Base de donnée SQL

Message par Keros »

Les manips, c'est lancer les lignes de commande sur le fichier.
Il faut que tu sois sur un PC linux pour exécuter ces commandes. sqlite3 doit être installé.
david86 a écrit : 01 mars 2023, 13:25 Page 1739btreeinitpage() ??
On tree page 846 cell119 ?
Je ne sais pas de quoi tu parles.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Base de donnée SQL

Message par david86 »

Ok, je vais farfouiller encore pour essayer de trouver.

Les lignes auxquelles tu dis
je ne sais pas de quoi tu parles.
sont celles des impressions écrans que j'ai mis dans mon post initial.

Merci,
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Base de donnée SQL

Message par Keros »

Mes connaissances en sql sont limités et je ne saurai pas te répondre sur les erreurs que tu as.

J'ai appliqué une fois la procédure que tu as trouvée. Je me souviens d'avoir fait les ligne de code au fur et à mesure pour arriver à avoir le fichier repaired.db. Je ne pourrais pas t'aider davantage.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Base de donnée SQL

Message par david86 »

Ça marche, merci quand même :-)
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Base de donnée SQL

Message par david86 »

Bon ben je crois que c'est réparé après 3 jours, enfin soirée de recherche... Je n'ai pas opté pour une solution linux mais Windows, voici mon retour d'expérience, et je sui prêt à en discuter si ça arrive à d'autres tellement c'est simple en fait, on se complique la tête, après c'est un peu normal lorsque l'on connaît pas.

Il y en a pour 5 minutes si vous avez putty, winscp et le un logiciel de manipulation de base sql. J'ai mis un lien pour celui dont je me suis servi, et ça passe très facile !! très très facile !!!!

Voici ma façon de faire :

Se connecter en ssh pour arrêter domoticz :
Ne jamais manipuler la base de données à chaud!
sudo service domoticz.sh stop C’EST IMPERATIF !!!!!!

Avec WinSCP se connecter au raspberry, farfouiller jusqu’au dossier où se trouve la base de données, en général à celui de la base de domoticz
Téléchargez-la
Renommez-la par exemple domoticz-break.db
Lancer l’application SQLiteDatabaseBrowserPortable_3.12.2_English.paf.exe
https://portableapps.com/apps/developme ... r_portable
Faire Fichier / Ouvrir une base de données
Valider
La base doit s’ouvrir
Faire Outils / Vérifier l’intégrité
++>Erreur
Faire Fichier / Exporter vers sql, cocher les cases des options
Choisir une destination sur votre PC et valider (vous créer un fichier sql de votre base de données en .db initilamenet)
Fermer SQLiteDatabaseBrowser et rouvrer SQLiteDatabaseBrowser
Faire Fichier / Importer une base de données en sql
Choisissez-lui un nom, autre que celui d’origine corrompu -->par exemple domoticz.db
Refaire une vérification
Faire Outils / Vérifier l’intégrité
Logiquement plus d’erreur
Faire fichier enregistrer
La taille du fichier corrigé doit être sensiblement la même (ne faites pas comme en oubliant d’enregistrer… C’est juste rigolo à faire si vous avez encore la base de données, même corrompu, il faut juste recommence, mais bref !)
Vous renommez votre base de données CORRIGÉES en domoticz.db
Et après vous réinjecter avec WinSCP votre base de données corrigée
sudo service domoticz.sh start pour repartir

Quel plaisir de ne plus voir 50000 lignes rouges !
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Base de donnée SQL

Message par Keros »

Content que tu ais pu nettoyer ta base.

Merci pour les explications détaillées.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre