[Tuto] Modification base de données en cas de problèmes de versions

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Maxou
Messages : 33
Inscription : 22 déc. 2016, 19:14
Contact :

[Tuto] Modification base de données en cas de problèmes de versions

Message par Maxou »

TUTO pour ceux qui veulent passer en version 2020.2 de Domoticz sans perte de données avec une vieille version (non compatible 2020) par modification de la structure de la base de données.

------------
Note importante par Keros :
La modification de la base de données de DomoticZ est risquée et peu entrainer des soucis.
Il est vivement recommandé de procéder à une sauvegarde complète de votre système afin de pouvoir revenir en arrière.
------------

Entre la version V3/V4 et la version 2020, la structure de la base de données (domoticz.db) a été modifiée.
Il y a :
  • 2 tables qui ont été supprimées
  • Quelques tables où les champs ont été déplacés
  • Quelques tables où des champs ont été supprimés
  • 1 table où un champ a été ajouté
  • Des Index à supprimer et 4 autres, à ajouter (les Index permettent un accès optimisé à la DB).
******************************
PROCEDURE
******************************
1 - Sauvegarde de la base de données depuis le portail Domoticz
CONFIGURATION / PARAMETRES / SAUVEGARDE/RESTAURATION

2 - Arrêter le service Domoticz en ligne de commande avec puTTY

Code : Tout sélectionner

cd /home/pi/domoticz
sudo service domoticz.sh stop

3 - Renommer le dossier domoticz en domoticz.V4.old, par exemple
Depuis puTTY

Code : Tout sélectionner

mv domoticz domoticz.v4.old
Depuis un client SFTP (WinSCP par exemple)

4 - Installer la dernière version de Domoticz depuis puTTY
Mise à jour OS

Code : Tout sélectionner

sudo apt-get update
sudo apt-get upgrade
Domoticz

Code : Tout sélectionner

cd ~/domoticz
http://releases.domoticz.com/releases/release/domoticz_linux_armv7l.tgz
tar xvfz domoticz_linux_armv7l.tgz
rm domoticz_linux_armv7l.tgz
cd ~/

5 - Copier vos fichiers personnels (script, templates, images, icon..txt, ...) dans les dossiers respectifs
NOTA : Ne pas oublier de modifier les droits d'accès des fichiers 'Bash', 'Python' avec :

Code : Tout sélectionner

sudo chmod +x /home/pi/domoticz/scripts/....
Par principe, je convertie le format des scripts en UTF-8 avec

Code : Tout sélectionner

fromdos /home/pi/domoticz/scripts/....
6 - Redémarrer Domoticz depuis puTTY

Code : Tout sélectionner

sudo reboot
7 - Ouvrir le portail Domoticz depuis votre navigateur. Vous devez être en version 2020.2

8 - Sauvegarde de la base de données vierge depuis le portail Domoticz
CONFIGURATION / PARAMETRES / SAUVEGARDE/RESTAURATION -> database 2020 vierge

9 - Sur votre PC, faire une copie de l'ancienne DB et la renommer 'domoticz vxx to v2020.db'

10 - Lancer une instance de SQLiteDatabaseBrowserPortable

11 - Ouvrir la base de données vierge : database 2020 vierge

12 - Lancer autre une instance de SQLiteDatabaseBrowserPortable

13 - Ouvrir la copie de la base de données de l'ancienne version 'domoticz vxx to v2020.db'

14 - Modifier la structure (replacer les champs, ajout ou suppression des champs, suppression et ajout d'index.
Une base de données, c'est comme un fichier Excel (je me servais souvent d'Excel comme DB pour mes applications industrielles permettant à toute personne néophyte, de modifier les données sans soft particulier) :
  • les onglets d'Excel sont les Tables de la DB
  • les colonnes d'Excel sont les champs de la DB
  • les lignes d'Excel sont les enregistrements de la DB
  • les liens d'Excel sont les Index de la DB
Dans Excel, si vous modifiez une colonne ou un lien, votre macro VBA ne pourra pas fonctionner et pour que cela fonctionne, vous devrez remettre les colonnes en ordre, supprimer ou ajouter des colonnes. C'est pareil pour une DB ;)
Votre base de référence est celle en version 2020.
Votre base à modifier est celle de l'ancienne version.
  • Ouvrez la structure de chaque Table dans les 2 SQLiteDatabaseBrowser et comparez s'il y a du changement : manque de champ, format des champs, ajout de champs ou champ déplacé
    - Pour modifier la structure d'une table, faire un clic droit sur la Table et choisir 'Modifier une table...'
    - A l'affichage de la structure de la base, vous avez la possibilité de
    1. supprimer un champ
    2. remonter un champ pour le replacer au bon endroit
    3. d'insérer un nouveau champ en renseignant : le Nom, le Type, la valeur par Défaut
      Comparez la structure avec la version 2020 et SI TOUT EST IDENTIQUE, cliquer sur 'OK'
      PS : lorsque le Type n'est pas dans la liste déroulante, faire un Copier/Coller avec la structure 2020 ;)
  • Supprimer les Index qui serait en trop
  • Ajouter les Index manquants en cliquant sur le Menu 'Editer / Créer un Index...', renseigner le Nom, la Table utilisée, les Colonne dans l'Index source 2020. BIEN VERIFIER l'exactitude de l'Index
  • Supprimer le contenu de la Table 'sqlite_stat1' qui contient des enregistrements pointant sur des Index absents
    1. Sélectionnez l'onglet 'Parcourir les données'
    2. Sélectionnez la Table 'sqlite_stat1'
    3. cliquez sur la première ligne
    4. appuyer sur la touche SHIFT, maintenez cette touche et cliquez sur la dernière ligne
    5. Appuyer sur le bouton 'Supprimer l'enregistrement'
15 - 'Enregistrer les modifications' votre base de données modifiée avec SQLiteDatabaseBrowserPortable

16 - Restaurer votre nouvelle DB depuis le portail Domoticz en version 2020.2

17 - Fermer la page Domoticz sur votre navigateur

18 - Rebooter votre Pi depuis puTTY

Code : Tout sélectionner

sudo reboot
19 - Vider votre cache navigateur depuis le Menu 'Options' et / ou l'historique pour Firefox

20 - Lancer Domoticz depuis votre navigateur et vous devriez récupérer tous vos équipements, données, ...

******************************
FIN DE PROCEDURE
******************************

Voilà, je pense que les explications sont assez complètes et détaillées pour que vous y arriviez
;)
Dernière modification par Maxou le 29 janv. 2021, 19:00, modifié 8 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Modification base de données en cas de problèmes de versions

Message par Keros »

Merci Maxou pour ce tuto bien détaillé :)
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