问题

Jira 并没有怎么使用,不知道为什么突然无法删除问题,删除时报错:

1
2
3
4
5
6
7
8
技术细节
日志查询编号: 1d6ae624-07c4-40c4-9d36-840d4bd94f0d

原因
参考URL: http://jira.company.com/secure/RapidBoard.jspa?rapidView=8&projectKey=XXXX&view=planning&selectedIssue=XXXX-1

com.atlassian.greenhopper.manager.lexorank.LexoRankIntegrityException: Expected exactly 2 rows; the maximum marker row and the lowest ranked row for rank field[id=10105]
com.atlassian.greenhopper.manager.lexorank.LexoRankIntegrityException: Expected exactly 2 rows; the maximum marker row and the lowest ranked row for rank field[id=10105]

环境

  • Jira 7.13.0
  • CentOS 7.6 1810
  • MySQL 5.7.25

解决方案

按照官方文档解释,根本原因是 Root Cause #3,在 Jira | 管理 | 问题 | 自定义字段 中存在多余全局等级,是某些操作导致生成了多余的 等级 字段,导致系统工作不正确,需要删除无用的等级。

Jira | 管理 | 系统 | LexoRank管理 页面中,可以发现列表中大部分项目包含问题的数量为 0,只有最后一个包含问题的数量非 0;同时运行完整性检查,发现只有一个能完全通过验证。 在这里要确保所有问题都被均衡到正确的 Rank 中,可以手动执行均衡操作,但这次很幸运,不需要操作。

备份

1
mysqldump -uroot -p --all-databases > mysql-backup.sql

解锁

通过以下方法操作 MySQL 数据库将自定义等级字段解锁

获取当前正在使用的 rank id,并对照 Jira | 管理 | 系统 | LexoRank管理 页面中找到没有使用的 等级

1
2
3
4
5
6
$ mysql -u root -p
use jiradb
SELECT propertyvalue
FROM propertyentry
  LEFT JOIN propertynumber ON propertyentry.ID = propertynumber.ID
WHERE property_key = 'GreenHopper.LexoRank.Default.customfield.id';

将错误的字段替换下面的 customfield_10105 customfield_10200 customfield_10300,如有多个使用逗号分隔。

1
2
3
SELECT id,customfieldtypekey,cfname from customfield where customfieldtypekey like 'com.pyxis.greenhopper.jira%';
SELECT * from managedconfigurationitem;
UPDATE managedconfigurationitem set managed='false' where item_id in ('customfield_10105','customfield_10200','customfield_10300');

删除

  • 点击 Jira | 管理 | 问题 | 自定义字段,将无用的字段删除。
  • 点击 Jira | 管理 | 系统 | 索引 | 重建索引

问题解决

注意:重复权限这个只需要在检查中点击修复即可,这个警告并不影响实际使用:

New JIRA Install - Integrity Checker: Duplicate Permission: SchemePermissions (ID: 10101)