Похоже, я столкнулся с проблемой при запуске последнего обновления, которое завершается неудачей по следующей причине:
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_users_on_username_lower"
DETAIL: Key (username_lower)=(scottie) уже существует.
Я попытался восстановить работу, удалив этого пользователя через консоль Rails или напрямую в базе данных PostgreSQL, но постоянно получаю ошибку о том, что сервер не запущен.
Ниже приведены мои попытки запустить rails после запуска приложения:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершился с кодом возврата #<Process::Status: pid 3743 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed с параметрами {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
c744729efb7a5813699e2fe8fa46ab551352d45ada8dcb9204121508364f8438
** FAILED TO BOOTSTRAP ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.
root@kForum:/var/discourse# ./launcher start app
запуск существующего контейнера
+ /usr/bin/docker start app
app
root@kForum:/var/discourse# ./launcher enter app
root@kForum-app:/var/www/discourse# rails c
bundler: не удалось загрузить команду: pry (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/pry)
PG::ConnectionBad: не удалось подключиться к серверу: такой файл или каталог не существует
Запущен ли сервер локально и принимает ли он
подключения через Unix-сокет "/var/run/postgresql/.s.PGSQL.5432"?
Ниже приведены мои попытки запустить postgres:
root@kForum:/var/discourse# ./launcher enter app
root@kForum-app:/var/www/discourse# su discourse
discourse@kForum-app:/var/www/discourse$ psql discourse
psql: ошибка: не удалось подключиться к серверу: такой файл или каталог не существует
Запущен ли сервер локально и принимает ли он
подключения через Unix-сокет "/var/run/postgresql/.s.PGSQL.5432"?
discourse@kForum-app:/var/www/discourse$
Я восстанавливаю предыдущую снимок в DigitalOcean, чтобы вернуться в рабочее состояние, но странная (пугающая?) часть заключается в том, что даже восстановление снимка не вернуло сайт в работу. Этот снимок был сделан более 24 часов назад, когда я точно знаю, что форумы работали нормально, так что это должно быть не связано с попыткой обновления.
В восстановленном снимке вот ошибка, которую я вижу при попытке остановить/запустить/перезапустить приложение:
root@kForum:/var/discourse# ./launcher restart app
+ /usr/bin/docker stop -t 10 app
app
запуск существующего контейнера
+ /usr/bin/docker start app
Ошибка ответа от демона: контейнер "a1023d05a7b4de25ded1aa69ad49caed9fa59d15fa8e8130d32db82934139e6b" уже существует
Ошибка: не удалось запустить контейнеры: app
root@kForum:/var/discourse#
Наконец, я запустил discourse-doctor, и вот часть, которая, похоже, относится к ошибке?
Проверка версий кластера ok
Исходный кластер был завершён некорректно.
Ошибка, выход
-------------------------------------------------------------------------------------
ОБНОВЛЕНИЕ POSTGRES НЕ УДАЛОСЬ
Пожалуйста, посетите https://meta.discourse.org/t/postgresql-13-update/172563 для получения поддержки.
Вы можете запустить ./launcher start app для перезапуска приложения в это время
FAILED
--------------------
Pups::ExecError: /root/upgrade_postgres завершился с кодом возврата #<Process::Status: pid 46 exit 1>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed с параметрами "/root/upgrade_postgres"
c98d1b076faed9b0c728cd944b3f2436afc9e266910b82a644c71fd80b42f073
** FAILED TO BOOTSTRAP ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.
==================== КОНЕЦ ЛОГА ПЕРЕСОЗДАНИЯ ====================
Не удалось пересоздать приложение.
Проверка вашего доменного имени . . .
Подключение к forum.kirupa.com успешно.
Возможно, вам стоит удалить любые нестандартные плагины и пересоздать приложение.
Попытка перезапуска существующего контейнера . . .
запуск существующего контейнера
+ /usr/bin/docker start app
Ошибка ответа от демона: драйвер не смог запрограммировать внешнюю связность для конечной точки app (78a35e0f12e5af560bd1f991ead900fefd0c81570cc4582fe99aaa5e56b238e8): Ошибка при запуске userland proxy: listen tcp 0.0.0.0:443: bind: адрес уже используется
Ошибка: не удалось запустить контейнеры: app
Не удалось перезапустить контейнер.
==================== ПЛАГИНЫ ====================
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-sitemap.git
Не обнаружено неофициальных плагинов.
См. официальный список на https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb.
========================================
Версия Discourse на forum.kirupa.com: НЕ НАЙДЕНА
Версия Discourse на localhost: НЕ НАЙДЕНА
Что, по вашему мнению, происходит здесь? Моя первая цель — вернуть форумы в работу. Исправление ошибок обновления — вторая цель.
Спасибо,
Кирупа