Sur l’un des serveurs de mes clients Codeable, j’ai mis à jour MariaDB de la version 10.1 à la version 10.3. Après la mise à jour, MariaDB fonctionnait encore et le site s’affichait correctement, mais certaines procédures SQL retournaient cette erreur :
ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 21, found 20.
Created with MariaDB 100212, now running 100303.
Please use mysql_upgrade to fix this errorCode language: JavaScript (javascript)
Cette erreur peut apparaître après une mise à jour majeure de MariaDB lorsque les tables système internes n’ont pas encore été mises à niveau.
En clair : le serveur MariaDB a été mis à jour, mais la base système mysql contient encore des tables dans l’ancien format.
Comprendre l’erreur “Column count of mysql.proc is wrong”
Le message indique que la table système mysql.proc n’a pas la structure attendue par la version actuelle de MariaDB.
Dans l’exemple :
Expected 21, found 20
MariaDB attend une table avec 21 colonnes, mais la table existante n’en possède que 20. Elle a été créée avec une ancienne version, puis le serveur a été lancé avec une version plus récente.
MariaDB documente l’erreur 1558 comme un signe probable qu’une mise à jour n’a pas été effectuée correctement, car l’une des tables système ne correspond pas à la taille attendue par la version en cours. La documentation indique que mariadb-upgrade règle généralement ce problème. MariaDB : Error 1558
Cette erreur apparaît souvent lors de l’utilisation de :
- procédures stockées ;
- fonctions stockées ;
- triggers ;
- events ;
- outils d’export ;
- interfaces d’administration comme phpMyAdmin, Plesk ou scripts maison.
Le site peut donc continuer à fonctionner en apparence, tout en ayant une base système incomplètement migrée. C’est le genre d’erreur discrète qui attend poliment le bon moment pour casser un export. Très courtois, très SQL.