SAM Broadcaster : réparer une table MySQL corrompue

Vous lancez SAM Broadcaster, puis plus rien ne part. La file d’attente reste vide, impossible d’ajouter un titre, et le journal d’évènements affiche une erreur MySQL. Dans mon cas, la ligne coupable était celle-ci :

Can’t open file: ‘queuelist.MYI’ (errno: 145)

Cette erreur indique généralement une table MyISAM corrompue. Ici, SAM Broadcaster ne peut plus ouvrir la table queuelist, celle qui gère la file d’attente. Résultat : l’automation radio perd la main, et votre programmation reste plantée comme un disque rayé.

Corruption de la table MySQL

Avant de réparer : sauvegardez la base SAM Broadcaster

La commande REPAIR TABLE peut sauver une table MyISAM. Cependant, elle peut aussi aggraver une situation déjà fragile si le disque, les fichiers ou les index sont abîmés. Commencez donc par faire une copie de sécurité.

Si vous utilisez MySQL ou MariaDB en local sur Windows, commencez par fermer SAM Broadcaster. Ensuite, sauvegardez la base depuis phpMyAdmin, HeidiSQL, MySQL Workbench ou la ligne de commande.

Depuis une invite de commandes, adaptez le nom de la base et le chemin de sortie :

mysqldump -u root -p samdb > C:\backup\samdb-before-repair.sqlCode language: CSS (css)

Si vous ne connaissez pas le nom exact de la base, ouvrez la configuration de SAM Broadcaster et regardez les paramètres de connexion MySQL. Le nom ressemble souvent à samdb, mais ne partez pas du principe qu’il est identique partout.

Comprendre l’erreur queuelist.MYI

Les anciennes installations SAM Broadcaster utilisant MySQL reposaient souvent sur des tables MyISAM. Une table MyISAM utilise généralement plusieurs fichiers :

  • .frm pour la définition historique de la table ;
  • .MYD pour les données ;
  • .MYI pour les index.

Si le fichier queuelist.MYI est corrompu, absent ou marqué comme crashé, MySQL peut refuser d’ouvrir la table. SAM Broadcaster ne peut alors plus lire ou écrire correctement la file d’attente.

Les causes fréquentes sont assez classiques :

  • arrêt brutal de Windows ;
  • coupure de courant pendant une écriture ;
  • fermeture forcée de SAM Broadcaster ;
  • plantage du service MySQL ;
  • disque dur vieillissant ;
  • antivirus trop agressif sur les fichiers MySQL ;
  • machine radio laissée allumée des semaines sans maintenance.

En clair : la base n’a pas forcément “explosé”. Très souvent, l’index MyISAM s’est simplement retrouvé incohérent. C’est réparable, mais il faut garder la tête froide.

Distingo, le livret à 2%

Méthode simple avec phpMyAdmin

Si phpMyAdmin est installé, c’est la méthode la plus accessible.

  1. Fermez SAM Broadcaster.
  2. Ouvrez phpMyAdmin.
  3. Sélectionnez la base utilisée par SAM Broadcaster.
  4. Cliquez sur l’onglet SQL.
  5. Lancez d’abord une vérification.
CHECK TABLE queuelist;

Si MySQL confirme que la table est crashée ou doit être réparée, lancez ensuite :

REPAIR TABLE queuelist;

Si la réparation réussit, relancez SAM Broadcaster et vérifiez que la file d’attente fonctionne de nouveau. Ajoutez un titre, supprimez-le, puis testez une rotation simple.

Méthode avec HeidiSQL

Spacial recommande HeidiSQL comme outil MySQL graphique pour résoudre des problèmes de tables dans SAM Broadcaster. C’est souvent plus simple que phpMyAdmin si votre serveur MySQL tourne uniquement en local sur Windows.

  1. Fermez SAM Broadcaster.
  2. Ouvrez HeidiSQL.
  3. Connectez-vous au serveur MySQL local.
  4. Sélectionnez la base de SAM Broadcaster.
  5. Repérez la table queuelist.
  6. Ouvrez un nouvel onglet de requête.
  7. Lancez CHECK TABLE, puis REPAIR TABLE si nécessaire.
CHECK TABLE queuelist;
REPAIR TABLE queuelist;

HeidiSQL permet aussi d’exporter rapidement la base avant réparation. Faites-le. Une sauvegarde prend deux minutes. Une playlist perdue prend une soirée, puis quelques jurons.

Distingo, le livret à 2%

Méthode en ligne de commande MySQL

Si vous n’avez ni phpMyAdmin ni HeidiSQL, vous pouvez utiliser le client MySQL directement.

Sur une ancienne installation Windows, le client peut se trouver dans un dossier proche de celui-ci :

C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exeCode language: CSS (css)

Ouvrez une invite de commandes, puis connectez-vous à MySQL :

mysql -u root -p

Sélectionnez la base SAM Broadcaster :

USE samdb;Code language: PHP (php)

Vérifiez puis réparez la table :

CHECK TABLE queuelist;
REPAIR TABLE queuelist;

Si la base ne s’appelle pas samdb, listez les bases disponibles :

SHOW DATABASES;

Puis vérifiez les tables de la base sélectionnée :

SHOW TABLES;

Réparer toutes les tables SAM Broadcaster

Si une table MyISAM a crashé, d’autres tables peuvent être fragiles. Après sauvegarde, vous pouvez vérifier l’ensemble de la base.

Depuis MySQL :

CHECK TABLE queuelist, historylist, songlist;

Adaptez la liste selon les tables présentes dans votre base. Pour une vérification plus large, utilisez mysqlcheck depuis la ligne de commande.

mysqlcheck -u root -p --check samdb

Pour réparer automatiquement les tables réparables :

mysqlcheck -u root -p --repair samdb

Ne lancez pas ce type de commande en pleine diffusion si SAM Broadcaster écrit dans la base. Fermez SAM avant maintenance. Sinon, vous demandez à MySQL de réparer une table pendant que SAM continue d’y toucher. C’est le genre de sport mécanique qui finit mal.

Quand utiliser myisamchk ?

myisamchk travaille directement sur les fichiers MyISAM. C’est puissant, mais plus risqué si le serveur MySQL continue d’utiliser les tables.

Utilisez myisamchk uniquement si :

  • REPAIR TABLE échoue ;
  • le serveur MySQL refuse d’ouvrir la table ;
  • vous savez où se trouvent les fichiers de données ;
  • vous pouvez arrêter proprement le service MySQL ;
  • vous avez déjà copié le dossier de la base.

Sur Windows, commencez par arrêter le service MySQL :

net stop mysql

Selon votre version, le service peut s’appeler MySQL, MySQL51, MySQL57, MySQL80 ou MariaDB. Vérifiez dans services.msc.

Ensuite, placez-vous dans le dossier de la base et vérifiez la table :

myisamchk queuelist.MYICode language: CSS (css)

Si une réparation est nécessaire :

myisamchk --recover queuelist.MYICode language: CSS (css)

Puis redémarrez MySQL :

net start mysql

Relancez SAM Broadcaster seulement après le redémarrage complet du service MySQL.

Erreurs fréquentes et solutions

ErreurCause probableAction recommandée
Can't open file 'queuelist.MYI' (errno: 145)Table MyISAM marquée comme crashéeCHECK TABLE, puis REPAIR TABLE queuelist;
Table is marked as crashedIndex MyISAM incohérentSauvegarder, puis réparer la table
Table was marked as crashed and last repair failedRéparation précédente incomplète ou échec disqueCopier les fichiers, arrêter MySQL, tester myisamchk
SAM démarre mais la queue list reste videTable queuelist inaccessible ou vidéeVérifier la table et restaurer une sauvegarde si nécessaire
MySQL refuse la connexionService MySQL arrêtéVérifier services.msc, démarrer le service
La corruption revient régulièrementArrêts brutaux, disque, antivirus ou service instableContrôler le disque, l’alimentation et la stratégie de sauvegarde

Vérifier que MySQL tourne correctement

Si SAM Broadcaster affiche une erreur de base de données au démarrage, commencez aussi par vérifier que MySQL tourne.

  1. Appuyez sur Windows + R.
  2. Tapez services.msc.
  3. Validez avec Entrée.
  4. Repérez le service MySQL ou MariaDB.
  5. Vérifiez qu’il est démarré.
  6. Placez le type de démarrage sur Automatique si nécessaire.

Si le service ne démarre pas, consultez les journaux MySQL avant de tenter une réparation au hasard. Une table corrompue n’est pas la seule cause possible. Le port peut être occupé, le mot de passe peut avoir changé, ou le serveur peut refuser de démarrer à cause d’un fichier de configuration cassé.

Firebird ou MySQL : quelle base pour SAM Broadcaster ?

SAM Broadcaster peut utiliser Firebird ou MySQL selon les versions et les choix d’installation. Firebird suffit souvent pour une petite bibliothèque musicale. MySQL devient plus intéressant quand la bibliothèque grossit, notamment au-delà de plusieurs milliers de titres.

Si vous gérez une radio avec une grosse rotation musicale, des historiques longs, des scripts PAL et plusieurs outils qui interrogent la base, MySQL reste plus confortable. En revanche, cela implique une vraie maintenance : sauvegardes, vérifications, optimisation et surveillance du disque.

Prévenir la corruption des tables SAM Broadcaster

Réparer une table, c’est bien. Éviter de réparer la même table tous les mois, c’est mieux.

  • Fermez SAM Broadcaster proprement avant d’éteindre Windows.
  • Évitez de couper l’alimentation de la machine radio.
  • Installez un onduleur sur le poste de diffusion.
  • Excluez le dossier de données MySQL de l’analyse antivirus en temps réel, si votre politique de sécurité le permet.
  • Sauvegardez la base automatiquement.
  • Vérifiez régulièrement l’état SMART du disque.
  • Ne laissez pas le disque système saturer.
  • Redémarrez proprement la machine lors des maintenances.
  • Évitez de faire tourner SAM sur un vieux disque mécanique mourant.
  • Documentez le nom de la base, l’utilisateur MySQL et le mot de passe.

Sauvegarde automatique de la base SAM Broadcaster

Sur Windows, vous pouvez créer une tâche planifiée qui exporte la base une fois par jour. Voici un exemple simple de script batch à adapter.

@echo off
set BACKUP_DIR=C:\backup\sam
set MYSQLDUMP=C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe
set DB_NAME=samdb
set DB_USER=root

if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"

"%MYSQLDUMP%" -u %DB_USER% -p %DB_NAME% > "%BACKUP_DIR%\samdb-%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%.sql"Code language: CSS (css)

Ce script demande le mot de passe à l’exécution. Pour une tâche planifiée entièrement automatique, utilisez un fichier d’options MySQL protégé plutôt que de mettre le mot de passe en clair dans le script.

L’objectif est simple : pouvoir restaurer la base si la réparation échoue. Une réparation est une tentative de sauvetage. Une sauvegarde est une assurance.

Optimiser les tables après réparation

Une fois la table réparée et SAM Broadcaster testé, vous pouvez optimiser les tables MyISAM. Faites-le hors diffusion, après sauvegarde.

OPTIMIZE TABLE queuelist;

Pour une base complète :

mysqlcheck -u root -p --optimize samdb

Inutile de lancer une optimisation toutes les heures. Une maintenance raisonnable suffit. Sinon, vous transformez MySQL en tapis de course pour base de données.

Quand restaurer au lieu de réparer ?

La réparation n’est pas toujours la meilleure réponse. Restaurez plutôt une sauvegarde si :

  • REPAIR TABLE échoue plusieurs fois ;
  • des données importantes ont disparu ;
  • la table réparée contient des valeurs incohérentes ;
  • la corruption revient juste après réparation ;
  • le disque montre des erreurs matérielles ;
  • MySQL plante pendant la réparation.

Dans ce cas, arrêtez d’écrire dans la base, copiez le dossier de données, puis restaurez le dernier dump sain. Plus vous insistez sur une base instable, plus vous réduisez vos chances de récupération propre.

Checklist rapide de récupération

  • Fermer SAM Broadcaster.
  • Vérifier que MySQL tourne.
  • Sauvegarder la base ou copier le dossier de données.
  • Identifier la table indiquée dans l’erreur.
  • Lancer CHECK TABLE queuelist;.
  • Lancer REPAIR TABLE queuelist; si la table est MyISAM.
  • Relancer SAM Broadcaster.
  • Tester l’ajout d’un titre dans la file d’attente.
  • Vérifier les logs MySQL et SAM.
  • Mettre en place une sauvegarde automatique.

Articles liés sur SkyMinds

Pour compléter ce dépannage SAM Broadcaster et MySQL, ces articles peuvent aider :

FAQ : corruption MySQL dans SAM Broadcaster

Que signifie l’erreur queuelist.MYI dans SAM Broadcaster ?

Elle indique que MySQL ne peut pas ouvrir le fichier d’index MyISAM de la table queuelist. Cette table gère la file d’attente de SAM Broadcaster. Si elle est corrompue, la queue list peut rester vide ou inutilisable.

Puis-je lancer REPAIR TABLE sans sauvegarde ?

Techniquement oui, mais ce n’est pas une bonne idée. Sauvegardez toujours la base ou copiez le dossier de données avant réparation. Une réparation peut échouer ou perdre une partie des données dans certains cas.

La commande REPAIR TABLE fonctionne-t-elle avec InnoDB ?

Non, pas comme avec MyISAM. REPAIR TABLE sert surtout aux tables MyISAM, Aria, Archive ou CSV selon MySQL/MariaDB. Pour InnoDB, il faut suivre une procédure de récupération différente.

SAM Broadcaster doit-il être fermé pendant la réparation ?

Oui. Fermez SAM Broadcaster avant de réparer une table. Cela évite que le logiciel écrive dans la base pendant que MySQL tente de reconstruire les index.

Pourquoi la corruption revient-elle après réparation ?

Les causes les plus fréquentes sont les arrêts brutaux, les coupures de courant, un disque défectueux, un antivirus qui verrouille les fichiers MySQL ou un service MySQL instable. Dans ce cas, il faut corriger la cause, pas seulement réparer la table.

Faut-il utiliser Firebird ou MySQL avec SAM Broadcaster ?

Firebird suffit pour une petite bibliothèque. MySQL devient plus intéressant pour une bibliothèque plus importante ou une installation radio plus complexe. En échange, MySQL demande une vraie stratégie de sauvegarde et de maintenance.

Que faire si REPAIR TABLE échoue ?

Arrêtez SAM Broadcaster, sauvegardez les fichiers restants, arrêtez MySQL, puis tentez une réparation avec myisamchk. Si le disque présente des erreurs ou si les données sont critiques, restaurez plutôt une sauvegarde saine.

Conclusion

Si SAM Broadcaster affiche Can't open file: 'queuelist.MYI' (errno: 145), la table queuelist est probablement corrompue. Dans le cas classique d’une table MyISAM, la réparation tient souvent en deux commandes : CHECK TABLE, puis REPAIR TABLE.

Mais la vraie bonne pratique est ailleurs : sauvegarder avant réparation, fermer SAM pendant l’opération, vérifier le disque, puis automatiser les sauvegardes. Réparer une table MySQL, c’est bien. Ne plus découvrir le problème cinq minutes avant une émission, c’est encore mieux.

Sources

Demandez à l'IA son opinion
Gravatar for Matt Biscay

Je suis Matt Biscay, développeur WordPress & WooCommerce certifié chez Codeable, administrateur système et enseignant.

J’aide les entreprises à créer, optimiser et fiabiliser leurs sites WordPress avec une approche technique propre : performance, sécurité, maintenance, développement sur mesure et résolution de problèmes complexes.

Sur Skyminds, je partage des tutoriels WordPress, WooCommerce, Linux et administration système, avec des solutions testées sur des cas réels et pensées pour durer.

Découvrez mes services WordPress et WooCommerce.

2 pensées sur “SAM Broadcaster : réparer une table MySQL corrompue”

  1. Bonsoir,

    Demain soir je commence mon emission effecivment je peux lancer aucune musique….Votre conseille m’intéresse bien mes je télécharge PHP MyAdmin mes sa me mé en plusieur dossier que faire ?

    Reply
    • Bonsoir,

      Si vous avez un serveur Apache/PHP/MySQL, il suffit d’installer PHPMyadmin et de lancer la commande REPAIR.

      Si vous n’avez pas ces serveurs, vous pouvez juste lancer :

      Program Files/MySQL/MySQL Server 5.1/bin/mysql.exe

      puis

      REPAIR TABLE queuelist ;
      Reply

Opinions