XBMC: régler les problèmes de mise à jour de la base de données

La beta 4 de XBMC 13 (Gotham) étant sortie, j’ai voulu la tester, mais j’ai eu une petite surprise lors de l’upgrade d’XBMC depuis la version 12 (Frodo) vers la version 13 beta 4. Impossible de mettre à jour la base de données des vidéos depuis la version 12 (MyVideos 75) vers la version 13 (MyVideos78). Je précise que toutes les instances d’XBMC installées chez moi communiquent avec une base de données MySQL centralisée.

Avant toute chose, il me parait important d’expliquer brièvement le fonctionnement des bases de données MySQL d’XBMC.
Chaque version XBMC utilise un schéma de base de données différent, ce qui fait que chaque version d’XBMC installée va créer une base de données différente. La base de données portera un nom du type: MyVideos<numéro de version> ou MyMusic<numéro de version>.

Pour XBMC 12.3, la base de données vidéos se nomme MyVideos75
Pour XBMC 13, MyVideos78.

Les différentes instances d’XBMC portant la même version utiliseront bien sûr la même base de données. Lorsque l’on installe une nouvelle version d’XBMC ou que l’on met à jour une version existante, la nouvelle version d’XBMC va vérifier les bases de données présentes dans MySQL, puis créer une nouvelle base de données estampillée du nouveau numéro de version, et intégrer les données présentes dans la BDD déjà existante.

Ceci étant dit, passons au diagnostique et à la résolution du problème.

Après une petite exploration des logs XBMC, voici ce qu’ils m’affichent :

20:28:29 T:5516   ERROR: Unable to open database: MyVideos78 [1049](Unknown database 'MyVideos78')
20:28:29 T:5516   ERROR: Unable to open database: MyVideos77 [1049](Unknown database 'MyVideos77')
20:28:29 T:5516   ERROR: Unable to open database: MyVideos76 [1049](Unknown database 'MyVideos76')
20:28:29 T:5516 NOTICE: Old database found - updating from version 75 to 78
20:28:31 T:5516   ERROR: Unable to copy old database MyVideos75 to new version MyVideos78

Il s’agirait donc bien d’un problème MySQL. Je fais un petit tour dans les logs de MySQL :

cat /var/log/mysqld.log

xbmc-mysql-err
La base de données des vidéos est corrompue.

Solution :

Lancer la réparation des tables posant problèmes. Se connecter à MySQL puis à la base de données :

mysql -u xbmc -p
USE MyVideos75 ;

Pour chaque table endommagée, lancer la commande :

REPAIR TABLE <table name>;

 

Dans mon cas, n’ayant pas envie de passer en revue toutes les tables, j’ai lancé une réparation de l’ensemble des tables de la base de données :

mysqlcheck--repair --database MyVideos75

xbmc-mysql-repair
Il est également possible de lancer une vérification et une réparation de toutes les tables pour l’ensemble des bases de données avec la commande :

mysqlcheck--repair --all-databases

 

Ça ne peut pas faire de mal. Choisissez donc la méthode qui vous convient. Suite à la réparation de la base de données, XBMC 13 beta4 a bien récupéré les informations de la base de données MyVideos75, et a créé la base de données MyVideos78.