En esta entrada voy a explicaros como solucionar el error de Jira «Cannot read property ‘value’ of undefined» cuando intentamos asignar una incidencia a un usuario.
Descripción del error
Este error normalmente se debe a la existencia de algún dato incorrecto en las propiedades de los usuarios lo cual hace que cuando pinchamos sobre el combo de responsable para asignar una incidencia nos muestre el siguiente error.
Error aplicación web
Error log Jira
Caused by: java.lang.IllegalStateException: User 'XXXX' has no unique key mapping.
Solución del Error
En primer lugar debemos realizar un backup de nuestra instancia de Jira para disponer de un respaldo en caso que algo fuera mal.
Una vez tenemos el respaldo pararemos el servicio de Jira.
Ejecutamos la siguiente sentencia SQL para determinar cuales son los usuarios con problemas.
SELECT lower_user_name FROM cwd_user WHERE lower_user_name NOT IN ( SELECT lower_user_name FROM app_user );
Comprobamos si los usuarios devueltos por la anterior consulta tienen una entrada en la tabla app_user
SELECT * FROM app_user WHERE lower_user_name = 'modificar por el usuario' OR user_key = 'modificar por el usuario';
Si la sentencia anterior devuelve un valor entonces actualizaremos la entrada para que las columnas lower_user_name y user_key coincidan con el nombre del usuario. En caso de no obtener ningún valor tendremos que ejecutar las siguientes sentencias en función del motor de base de datos que utilicemos.
PostgreSQL
INSERT INTO app_user VALUES ( (SELECT max(id) + 1 FROM app_user), 'modificar por el usuario', 'modificar por el usuario' ); # Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior UPDATE sequence_value_item SET seq_id = (SELECT max(id) FROM app_user) + 10 WHERE seq_name = 'ApplicationUser';
MySQL
INSERT INTO app_user SELECT (max(id) + 1), 'modificar por el usuario', 'modificar por el usuario' FROM app_user; # Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior UPDATE SEQUENCE_VALUE_ITEM SET seq_id = (SELECT max(id) FROM app_user) + 10 WHERE seq_name = 'ApplicationUser';
SQL Server
# Obtenemos el ID que utilizaremos en la segunda sentencia SELECT max(id) FROM app_user; INSERT INTO app_user VALUE ('<id de la sentencia anterior + 1>', 'modificar por el usuario', 'modificar por el usuario'); # Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior UPDATE sequence_value_item SET seq_id = <id de la sentencia anterior + 10> WHERE seq_name = 'ApplicationUser';
Oracle
INSERT INTO app_user VALUES ( (SELECT ( max(id) + 1 ) from app_user), 'modificar por el usuario', 'modificar por el usuario' ); # Ejecutar la siguiente sentencia sólo para instancias de JIRA 6.1 o superior UPDATE sequence_value_item SET seq_id=(SELECT ((MAX(id)+10)) FROM app_user) WHERE seq_name = 'ApplicationUser'; COMMIT;
Una vez realizados todos los pasos iniciamos el servicio de Jira y ya podremos asignar tareas a usuarios sin problemas.
Espero os haya servido de utilidad.
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.