Piwigo : Erreur Unknown column ‘last_visit’ in ‘field list’ après mise à jour en 2.9.x
Après une mise à jour en version 2.9.2 de ma galerie Piwigo, je me suis retrouvé avec un message erreur systématique sur toutes les pages du genre :
Warning: [mysql error 1054] Unknown column 'last_visit' in 'field list' UPDATE piwigo_user_infos SET last_visit = NOW(), lastmodified = lastmodified WHERE user_id = 1 in /.../include/dblayer/functions_mysqli.inc.php on line 845
Après une brève recherche sur Internet, je me suis aperçu que plusieurs autres galeries en ligne rencontraient également le même problème, mais sans trouver de solution pour y remédier. Une seule solution : les mains dans le cambouis…
Première vérification, la version de ma galerie afin de m’assurer que j’étais bien en 2.9.2, ce qui était bien le cas. Aucun souvenir d’un quelconque message d’erreur à la mise à jour.
Au vu du message d’erreur MySQL, je jette alors un œil dans la table user_infos pour constater que, effectivement, les champs « last_visit » & « last_visit_from_history » sont absents, la mise à jour, ne s’est donc pas correctement passée.
En exécutant la requête SQL de mise à jour pour la création de ses deux champs, je suis confronté à une autre erreur :
ERROR 1067 (42000): Invalid default value for 'registration_date'
Nouvelle inspection de la table en question pour regarder, cette fois la configuration du champ « registration_date ». Je constate alors qu’il est en format « datetime » avec une valeur par défaut « 0000-00-00 00:00:00 ». Voilà donc l’origine de mon problème de mise à jour, ma base de donnée n’acceptant apparemment pas une valeur 0 dans un champ date.
Il ne reste plus qu’à changer cela, pour que la valeur par défaut ne soit plus 0 mais une date, à l’aide de la requête SQL suivante :
ALTER TABLE `piwigo_user_infos`
MODIFY COLUMN `registration_date` datetime NOT NULL default '1970-01-01 00:00:00';
Ma table ayant cette fois une structure acceptable pour ma base de données, il ne me reste plus qu’à exécuter les requêtes de création des nouveaux champs, qui cette fois devrait fonctionner :
ALTER TABLE `piwigo_user_infos`
ADD COLUMN `last_visit` datetime default NULL,
ADD COLUMN `last_visit_from_history` enum('true','false') NOT NULL default 'false';
La requête s’exécute maintenant parfaitement et le message d’erreur disparaît enfin des pages de ma galerie.