J3.x:Les noms d'utilisateur en double provoquent un problème de mise à jour
From Joomla! Documentation
Sur certains sites Web, la mise à jour vers Joomla 3.9.16 entraîne une erreur de base de données en raison de noms d'utilisateur en double. Si cela se produit, ne paniquez pas - la mise à niveau a été presque entièrement terminée sans problème, et le changement restant peut être appliqué à la base de données après avoir suivi les instructions ci-dessous.
Erreurs signalées
Les utilisateurs reçoivent une erreur de mise à jour concernant une requête de base de données ayant échoué en raison d'une clé dupliquée dans leur site #__users
lors de la mise à niveau de Joomla 3.9.15 ou version antérieure.
Versions affectées
Ceci ne concerne que la version Joomla : 3.9.16
Quelle est la cause
Votre site Web compte plusieurs utilisateurs dans la #__users
table avec le même nom d'utilisateur, ce qui est un problème de sécurité dans la mesure où le mauvais compte peut être consulté par le mauvais propriétaire du compte.
Comment résoudre l'anomalie ?
Vous devrez revoir votre #__users
table dans votre base de données et corriger tout nom d'utilisateur en double en supprimant les anciens comptes d'utilisateur ou en changeant le nom d'utilisateur jusqu'à ce que tous les noms d'utilisateur soient uniques. Une fois cette opération terminée, si vous avez déjà effectué une mise à niveau vers la version 3.9.16, exécutez l'outil de réparation de schéma de base de données pour terminer la mise à niveau (cette étape n'est pas requise si vous effectuez cette révision avant la mise à niveau).
Joomla n'est pas en mesure de déterminer automatiquement l'action correcte à prendre et, par conséquent, ne peut pas effectuer cette étape pour vous - elle doit être corrigée par vous en tant que propriétaire du site.
La requête SQL suivante peut être exécutée sur votre base de données pour afficher les noms d'utilisateur dupliqués:
SELECT username FROM #__users GROUP BY username HAVING COUNT(*) > 1
One possible way to make resolving this simpler might be to remove all users who have never visited the site. Though this should be done with care, and ensure to backup the table first. After running this query, you can check again how many duplicate users you have.
DELETE FROM #__users WHERE lastvisitDate = "0000-00-00 00:00:00"