업데이트 문제: 포럼 오류

저희도 동일한 현상을 겪고 있습니다. 이 역시 수년간 문제없이 운영되어 온 표준 Discourse 설치 환경입니다.

제 추측은 Postgres 확장 기능을 추가하려는 데이터베이스 마이그레이션에 문제가 있다는 것입니다. ./launcher rebuild 실행 중 발생한 트레이스백에서 다음 내용을 확인할 수 있습니다.

/var/www/discourse/db/migrate/20220304162250_enable_unaccent_extension.rb:5:in change’`

이 마이그레이션이 예를 들어 db/migrate/20120924182000_add_hstore_extension.rb와 동일한 형식을 따르는 것이 맞지 않을까요?

I, [2022-04-02T12:49:18.895537 #1] INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"' NOTICE: extension "pg_trgm" already exists, skipping I, [2022-04-02T12:49:18.984635 #1] INFO -- : CREATE EXTENSION

@RGJ 이 변경 사항을 테스트해 보는 데 대해 조언해 주실 수 있을까요?

아니요, enable_extension은 동일한 작업을 수행합니다.

그것은 놀랍지 않습니다. 이 문제를 겪는 거의 모든 사용자가 공통적으로 가지고 있는 것이 바로 이것이기 때문입니다. 혹시 오랫동안 업데이트되지 않은 (외부) Postgres 데이터베이스를 사용 중이거나, 다른 접근 권한을 가지고 있는 경우인가요?

여기서도 정확히 같은 문제가 발생하고 있습니다. 표준 방식으로 설치해서 몇 년 동안 잘 작동해 왔는데, 업그레이드를 시도하면 동일한 오류가 나요. 외부 데이터베이스는 사용하지 않고 있습니다.

에릭, 안녕하세요.
알 수 없는 이유로, 해당 게시글 작성자는 PG13을 제거하고 PG10을 설치하고 있었습니다(해당 사용자의 Pastebin 참조). 에릭님은 다른 문제를 겪고 계실 수 있으니, 명령어를 포함한 전체 출력을 답글(또는 Pastebin)에 올려주실 수 있을까요?

안녕하세요,

늦게 답변드려서 죄송합니다. 지난주 이후로 시간이 많이 부족했거든요.

당신과 스티븐 덕분에 문제가 해결되었고, 도움을 주셔서 감사합니다.

사실 하나의 문제가 다른 문제로 이어져서 모든 것을 빨리 해결하기가 쉽지 않았기 때문에, 어떤 일이 있었는지 설명드리고자 합니다.

먼저, 서버의 Postgres 버전이 포럼의 최신 버전과 더 이상 호환되지 않았습니다. 저는 10버전을 사용 중이었거든요.

우리는 이 문제를 발견하고 해결해야 했습니다. 해결하려면 Postgres를 업데이트해야 했지만, 서버에 이를 위한 디스크 공간이 충분하지 않았습니다. 포럼 용량의 최소 2배가 필요하며, 모든 것이 복제되기 때문입니다. 그래서 저는 포럼의 디스크 공간을 늘려야 했습니다. 이 모든 설정이 완료된 후 Postgres 업데이트가 순조롭게 진행되었고, 포럼 업데이트도 잘 끝났습니다. 특히 백업의 신뢰성에 대해 몇 번이나 식은땀을 흘렸지만, 그 후로는 모든 것이 잘 진행되었습니다.

다음은 수행해야 하는 과정입니다:

1 - app.yml 파일을 편집하고 postgres10.template.yml 줄을 postgres.template.yml로 변경합니다.

2 - 변경 사항을 저장합니다.

3 - 서버 디스크 공간을 늘립니다.

4 - Postgres를 업데이트합니다.

5 - 포럼을 업데이트합니다.

이 글이 제 상황과 비슷한 다른 분들에게 도움이 되기를 바랍니다.

곧 뵙겠습니다

저도 같은 일이 일어났어요! 이전에는 업그레이드를 위한 디스크 공간이 충분하지 않아 Postgres를 10.x 버전으로 고정했던 모든 사용자에게 이 문제가 발생했을 거라고 생각해요.

아래 명령어를 실행하여 이 문제를 해결할 수 있었습니다.

./launcher enter db

그 다음

su postgres -c 'psql discourse -c "create extension if not exists unaccent;"'

앱이 손상되어 있었기 때문에 "enter app"을 실행할 수 없었습니다.