J3.x: Nombres de usuarios duplicados pueden causar problema al actualizar
From Joomla! Documentation
En ciertos sitios web, actualizar a Joomla 3.9.16 provoca un error en la base de datos debido a nombres de usuarios duplicados. Si eso pasa, no entrar en pánico - la actualización ha sido mayormente completada sin problemas y está funcionando como de costumbre, el cambio restante de la base de datos puede realizarse después de seguir las instrucciones que figuran a continuación.
Errores reportados
Los usuarios reciben un error de actualización en relación con una consulta fallida de la base de datos debido a una clave duplicada en una tabla de su sitio web #__users
al actualizar a Joomla 3.9.15 o posterior.
Versiones afectadas
Esto sólo afecta a la(s) versión(ones) de Joomla!: 3.9.16
Cuál es la causa
El sitio web tiene más de un usuario en la #__users
tabla con el mismo nombre de usuario, lo cual es una amenaza para la seguridad, ya que el dueño equivocado puede acceder a la la cuenta incorrecta.
Cómo solucionarlo
Es necesario revisar la #__users
tabla en la base de datos y corregir todo nombre de usuario duplicado, ya sea removiendo cuentas viejas o cambiando los nombres de usuarios hasta que estos sean únicos. Una vez hecho esto, si ya se ha actualizado a la versión 3.9.16, ejecutar la herramienta de corrección del esquema de la base de datos para terminar la actualización (este paso no es necesario si esta revisión es hecha antes de la actualización).
Joomla no puede determinar automáticamente la acción correcta a tomar y como resultado, no puede realizar este paso por si mismo - tiene que ser corregido por el dueño del sitio.
El siguiente SQL Query puede ser ejecutado en la base de datos para ver cuales son los nombre de usuario duplicados:
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"