You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu安装GitLab时出现PG::DuplicateSchema错误求助

解决Ubuntu安装GitLab时PG::DuplicateSchema错误的方法

问题背景

在Ubuntu上通过apt install gitlab-ce或gitlab-ee安装GitLab时,出现如下错误:

PG::DuplicateSchema: ERROR:  schema "gitlab_partitions_dynamic" already exists
/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20211202041233_init_schema.rb:7:in `up'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `public_send'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:121:in `block in write_using_load_balancer'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:127:in `block in read_write'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:198:in `retry_with_backoff'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:116:in `read_write'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `write_using_load_balancer'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:72:in `transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database.rb:369:in `block in transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database.rb:368:in `transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/lock_retry_mixin.rb:36:in `ddl_transaction'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:15:in `block in with_advisory_lock_connection'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/migrations/pg_backend_pid.rb:12:in `with_advisory_lock_connection'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:117:in `configure_database'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db.rake:95:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'

排查本地PostgreSQL未发现关联数据库、表或schema,怀疑GitLab连接了其他PostgreSQL实例。

解决步骤

1. 确认GitLab使用的PostgreSQL实例

  • 查看GitLab数据库配置文件:
    sudo cat /etc/gitlab/gitlab.rb | grep -E "(postgresql\['enable'\]|gitlab_rails\['db_host'\])"
    
    • 若postgresql['enable'] = false,说明GitLab使用外部PostgreSQL实例,需连接到该实例进行操作。
    • 若postgresql['enable'] = true(默认),说明使用GitLab内嵌的PostgreSQL实例,需用gitlab-psql命令连接,而非系统自带的psql。

2. 针对外部PostgreSQL实例的处理

  • 连接到外部PostgreSQL实例,切换到GitLab配置的数据库(查看gitlab_rails['db_database']的值,默认为gitlabhq_production)。
  • 删除已存在的重复schema:
    DROP SCHEMA IF EXISTS gitlab_partitions_dynamic CASCADE;
    
  • 重新执行GitLab配置:
    sudo gitlab-ctl reconfigure
    

3. 针对内嵌PostgreSQL实例的处理

  • 停止GitLab服务:
    sudo gitlab-ctl stop
    
  • 连接到内嵌PostgreSQL:
    sudo gitlab-psql -d gitlabhq_production
    
  • 删除重复schema:
    DROP SCHEMA IF EXISTS gitlab_partitions_dynamic CASCADE;
    
  • 退出数据库后,重启服务并重新配置:
    sudo gitlab-ctl start && sudo gitlab-ctl reconfigure
    

4. 彻底清理残留后重新安装(上述方法无效时)

  • 完全卸载GitLab:
    sudo gitlab-ctl uninstall
    sudo apt remove --purge gitlab-ce gitlab-ee
    sudo rm -rf /opt/gitlab /var/opt/gitlab /etc/gitlab
    sudo userdel git
    
  • 清理系统PostgreSQL残留(若之前安装过系统级PostgreSQL):
    sudo apt remove --purge postgresql*
    sudo rm -rf /var/lib/postgresql /etc/postgresql
    
  • 重新安装GitLab:
    sudo apt update && sudo apt install gitlab-ce
    
  • 执行初始化配置:
    sudo gitlab-ctl reconfigure
    

内容的提问来源于stack exchange,提问作者ezop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:23:27