새 서버로 이전 중 - 데이터베이스 오류 발생

모든 것을 새 서버로 이동하려고 시도하고 있습니다. 마이그레이션 후 상단에 이 메시지가 표시됩니다:

앱 안에서 다음을 실행하려고 하면:

  # sudo ./launcher enter app
  # rails c
  > user = User.find_by_email("<admin_email>")
  > user.admin = true
  > user.save`

다음과 같은 오류가 발생합니다:

ActiveModel::MissingAttributeError: can’t write unknown attribute ``
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activemodel-6.0.2.2/lib/active_model/attribute.rb:206:in with_value_from_database' Caused by ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: zero-length delimited identifier at or near """" LINE 1: ... = '2020-04-23 16:30:36.173916' WHERE "site_settings"."" = 3 ^ from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in exec_params’
Caused by PG::SyntaxError: ERROR: zero-length delimited identifier at or near “”“”
LINE 1: … = ‘2020-04-23 16:30:36.173916’ WHERE “site_settings”.“” = 3
^
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.1/lib/patches/db/pg.rb:69:in `exec_params’

설치를 완료하는 방법에 대한 아이디어가 있을까요? 테이블이 손상된 것처럼 보입니다.

한 걸음 뒤로 물러서서, 정확히 무엇을 하려는지 더 자세히 설명해 주시겠어요? 이는 백업을 복원하기 전인가요, 아니면 복원 후인가요? 아니면 새로 설치하는 건가요?

실시한 단계:

  1. 새 서버에 최신 버전 설치
  2. 기존 서버를 읽기 전용으로 전환하고 백업 생성
  3. 새 서버에 백업 복원

3단계 이후에 오류가 발생했으며, 해당 과정을 두 번 반복했습니다.

app.yml에 개발자 이메일이 정의되어 있나요? 아직 컨테이너를 다시 빌드해 보셨나요?

네. 마이그레이션을 가져오지 않고 Discourse를 실행하면 오류 없이 정상적으로 작동합니다. 백업 데이터베이스를 복원한 후에는 오류가 발생하여 설정을 수정할 수 없으며, 개발자 이메일을 활성화하려고 해도 이메일이 전송되지 않습니다. 그래서 계정을 수동으로 활성화하려고 했는데, 그때 그 오류가 발생했습니다.

백업 복원 후 ./launcher rebuild app을 실행해 보셨나요? 아니면 컨테이너에 들어가서 rake db:migrate를 실행해 보셨나요? 도움이 될 수 있지만, 시도해 보기 전까지는 확신할 수 없습니다 :smiley:

이미 런처 리빌드 앱을 실행했지만 문제가 여전히 남아 있습니다. rake를 서버에서 실행해야 하나요, 아니면 앱 내부(런처에서 앱 진입)에서 실행해야 하나요?

./launcher rebuild app 명령도 동일한 작업을 수행합니다.

이전 인스턴스가 아직 실행 중인가요? 그렇다면 앞으로는 새 인스턴스를 삭제하고, 이전 인스턴스의 새로운 백업으로 다시 빌드하는 것이 가장 좋은 방법입니다.

네, 이전 서버는 여전히 실행 중입니다. 문제를 더 깊이 조사해 본 결과, 구형 서버에서도 동일한 오류가 발생했습니다. 같은 오류가 뜹니다. :face_with_raised_eyebrow:

site_settings 테이블을 비우고 수동으로 다시 설정해 볼까요? PostgreSQL에서 이 테이블의 모든 기록을 수동으로 삭제한 후에도 Discourse가 정상적으로 작동할까요?

무엇을 하고 있는지 확신이 없다면 그 작업을 피하는 것이 좋습니다.

더 고도화된 도움을 받으려면 Marketplace 채널에 질문을 남겨보시는 것을 추천합니다. 불행히도 설치 파일이 손상된 것 같습니다.