Bloc-notes : base de données Kodi corrompue
Anciennement XBMC (XBox MediaCenter), Kodi est un formidable outil pour gérer ses médiathèques. Il me sert principalement pour gérer mes fichiers multimédia. Il arrive parfois, au vu de la très grande quantité de fichiers que je possède, à SQLite de s’emballer et la base de données des médiathèques se corrompt. Dernier exemple en date d’hier soir, la moitié de mes diaporamas étaient amputées d’une voir plusieurs diapositives. Alors que le fichier image (jpg, png) s’y rapportant était présent « physiquement » sur le disque dur ou le partage NFS. Au départ j’ai cru à une erreur du scrapeur, mais une analyse des logs ne révéla rien. J’ai conclu que ma base de données était donc corrompue. En effet kodi créée un fichier SQLite pour chaque médiathèque (audio, photo, et autre). Ses fichiers sont sotckés dans : « /home/$User/.kodi/userdata/Database/«
Objectif
Supprimer la base de données corrompue pour recréer une base de données saine avec comme moteur MariaDB. SQlite est très bien pour de petites bases de données mais j’ai atteint rapidement sa limite. J’ai eu le même cas avec mon serveur owncloud que j’avais aussi migré vers mariaDB à l’époque.
Suppression de la BDD corrompue
Dans un premier temps à partir de kodi je supprime toutes les sources alimentant la médiathèque des photos. Ensuite, je nettoie la médiathèque et je quitte kodi. Je me rends dans le répertoire contenant le fichier de la base de données et je le renomme au cas où.
cd /home/olivier/.kodi/userdata/Database/ mv MyPictures90.db MyPictures90_bak24032015.db
L’ancienne base est maintenant supprimée.
Création de la nouvelle BDD
Je commence par installer MariaDB. Je me rends sur cette page qui permet de générer les dépôts pour sa distribution. Dans mon cas il s’agit d’une Debian Sid. Il ne me reste plus qu’à copier – coller les dépôts dans mon sources.list et d’installer la signature du dépôt :
sudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian sid main' sudo apt-get update sudo apt-get install mariadb-server
Je créer maintenant un utilisateur « kodi » qui pourra créer une BDD pour chaque médiathèque.
CREATE USER 'kodi' IDENTIFIED BY 'motdepasse'; #réglage de ses privilèges GRANT ALL ON *.* TO 'kodi';
Je configure kodi en mode Sql grâce à l’ajout d’un fichier advancedesettings.xml qui sera stocké dans le dossier « /home/olivier/.kodi/userdata« .
<advancedsettings> <videodatabase> <type>mysql</type> <host>127.0.0.1</host> <port>3306</port> <user>kodi</user> <pass>lemotdepasse</pass> </videodatabase> <musicdatabase> <type>mysql</type> <host>127.0.0.1</host> <port>3306</port> <user>kodi</user> <pass>lemotdepasse</pass> </musicdatabase> <picturesdatabase> <type>mysql</type> <host>127.0.0.1</host> <port>3306</port> <user>kodi</user> <pass>lemotdepasse</pass> </picturesdatabase> <videolibrary> <importwatchedstate>true</importwatchedstate> <importresumepoint>true</importresumepoint> </videolibrary> </advancedsettings>
A partir de là mon instance Kodi est prête pour une nouvelle médiathèque.
Nouvelle mediathèque
Rien de plus facile, il suffit d’ajouter les sources désirées dans Kodi pour qu’il se charge de créer les médiathèques et les BDD. Pour ceux qui voudraient aller plus loin, il est possible d’utiliser plusieurs instances Kodi avec la même BDD en « ouvrant » le serveur MariaDB/MySQL au réseau. Cela permet aux différents appareils embarquant kodi d’avoir accès à la même information en temps réel. Pour cela je vous conseille cette excellente page du wiki de kodi.