При обновлении GitLab столкнулся с ошибкой:
main: == [advisory_lock_connection] object_id: 53240, pg_backend_pid: 12591
main: == 20240617135002 ReAddTagsNameUniqueIndex: migrating =========================
main: -- indexes(:tags)
main: -> 0.0227s
main: -- current_schema(nil)
main: -> 0.0005s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0015s
main: -- index_exists?(:tags, :name, {:unique=>true, :name=>"index_tags_on_name", :algorithm=>:concurrently})
main: -> 0.0036s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0004s
main: -- add_index(:tags, :name, {:unique=>true, :name=>"index_tags_on_name", :algorithm=>:concurrently})
main: -- execute("RESET statement_timeout")
main: -> 0.0004s
main: == [advisory_lock_connection] object_id: 53240, pg_backend_pid: 12591
rake aborted!
При выполнении команды:
# gitlab-rake db:migrate -v
Стало немного понятнее, где ошибка:
StandardError: An error has occurred, all later migrations canceled:
PG::DuplicateTable: ERROR: relation "index_tags_on_name" already exists
Соответственно, придется подключаться к базе и править эти дубликаты руками. Можно подключиться к базе данных из консоли при помощи команды:
# sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
Но хотелось бы на будущее настроить удаленный доступ при помощи DbBeaver, чем собственно мы сейчас и займемся. И первым делом создадим супер-пользователя и назначим ему пароль (подключившись через консоль конечно).
CREATE ROLE chernousov WITH LOGIN SUPERUSER PASSWORD 'xSecretPasswordx';
Если вы посмотрите, настройки встроенного Postgresql-сервера, то сможете увидеть, что доступ восможен только локально через сокет и для внешненго доступа нам потребуется произвести несколько правок.
В каталоге /var/opt/gitlab/postgresql/data изменяем файлы:
- postgresql.conf – listen_addresses = ‘*’
- pg_hba.conf – host all all 0.0.0.0/0 md5
Перезапускаем встроенный Postgresql командой:
# gitlab-ctl restart postgresql
Подключаемся через DbBeaver.
