首页 新闻 会员 周边

GitLab 出现 "duplicate key value violates unique constraint" 问题

0
悬赏园豆:30 [已解决问题] 解决于 2023-03-30 07:35

这是 升级至 gitlab 15.10 出现 500 错误 问题的后续,从 gitlab 15.10 降级至 15.9.3 之后,有些项目中提交 issue 出现了 500 错误,对应的错误日志如下

ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_issues_on_project_id_and_iid"
DETAIL:  Key (project_id, iid)=(15, 758) already exists.
):

请问如何解决这个问题?

dudu的主页 dudu | 高人七级 | 园豆:30943
提问于:2023-03-29 14:59
< >
分享
最佳答案
0

在 gitlab 官网的 issue 评论中找到了简单的解决方法:以出问题项目的 project_id自增 issue id(iid+1) ,用 curl 命令 POST 请求 gitlab rest api 创建一个 issue,之后就可以在页面中正常创建 issue。

比如对于错误 Key (project_id, iid)=(15, 758) already exists,project_id 是 15,自增 iid 是 159,通过下面的 curl 命令发请求后问题就解决了。

curl --request POST --header "PRIVATE-TOKEN: ******" "https://gitlab-hostanme/api/v4/projects/15/issues?title=test&iid=759"
dudu | 高人七级 |园豆:30943 | 2023-03-30 07:28
其他回答(1)
0

根据错误日志,可以看到问题是由于在提交 issue 时,GitLab 尝试在数据库中创建一个已经存在的记录导致的。这种情况通常是由于 GitLab 在升级或降级时,未正确处理数据库中现有数据的原因。

要解决这个问题,可以尝试以下几种方法:

清理数据表
尝试清理数据库中的数据表,特别是与问题(issues)相关的表。可以尝试在 GitLab 控制台中使用以下命令:

gitlab-rake db:drop_all_partitions
gitlab-rake db:migrate
gitlab-rake db:seed_fu
这将删除所有分区并重新运行数据库迁移和填充数据。

手动重建索引
尝试手动重建与问题(issues)相关的索引,可以在 GitLab 控制台中使用以下命令:

gitlab-rake gitlab:elastic:index_reset
gitlab-rake gitlab:elastic:index_start
这将重置并重新开始 Elasticsearch 索引。请注意,这需要一些时间来完成。

重新安装 GitLab
如果以上方法都无法解决问题,您可能需要重新安装 GitLab,并从头开始设置。

收获园豆:30
Technologyforgood | 园豆:5686 (大侠五级) | 2023-03-29 21:44

感谢回答!在 gitlab 官网上找到了更简单的解决方法

支持(0) 反对(0) dudu | 园豆:30943 (高人七级) | 2023-03-30 07:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册