수입/마이그레이션 스크립트 실행 시 문제 발생

이전에 커스텀 스크립트를 사용하여 포럼을 Discourse로 성공적으로 마이그레이션한 적이 있지만, 이제 다시 실행하면 다음과 같은 import 오류가 발생합니다:

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in `rescue in new_client': We could not find your database: discourse. Which can be found in the database configuration file located at config/database.yml. (ActiveRecord::NoDatabaseError)

To resolve this issue:

- Did you create the database for this app, or delete it? You may need to create your database.
- Has the database name changed? Check your database.yml config has the correct database name.

To create your database, run:

        bin/rails db:create

제 스크립트에서 다음 import가 실패합니다:

require File.expand_path(File.dirname(__FILE__) + "/base.rb")

스크립트는 다음과 같이 실행하고 있습니다.

./launcher enter app
cd /var/www/discourse
bundle exec ruby script/import_scripts/avatar.rb

하지만 정확히 무엇이 문제인지 이해가 되지 않습니다: sudo -u postgres psql discourse를 통해 데이터베이스에 접근할 수 있으므로 “discourse” 데이터베이스가 존재하는 것은 확인했습니다. 또한 웹사이트도 정상적으로 작동하고 있습니다. rails c를 열어도 데이터에 접근할 수 있습니다.

여기서 무엇이 잘못되었는지 몇 가지 힌트를 주실 수 있을까요?

Discourse가 데이터베이스를 찾을 수 없습니다. 따라서 이를 수정해야 합니다. 표준 설치인지 개발용 설치인지 확인해 주세요. 먼저 적절한 가이드를 참고하여 Discourse가 정상적으로 작동하도록 하세요.

discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 문서를 참고하여 표준 설치를 수행했습니다.

마지막으로 정상적으로 작동했을 때 이후로 제가 한 것(지금 생각나는 것은)은 백업으로 복원한 것뿐입니다.

오류에 대해 혼란스러운 점은, 다른 모든 것은 정상적으로 작동한다는 것입니다. 사이트는 완벽하게 잘 작동합니다. 다만 가져오기 스크립트만 실패합니다.

그리고 컨테이너 안에서 스크립트를 실행하고 계신 건가요?

네, ./launcher enter app를 사용 중이고, 설정(app)이 하나만 있습니다.

아, 죄송합니다. 그건 이미 OP에서 말씀하셨는데 제가 제대로 읽지 못했네요!

설명할 방법을 모르겠네요. 재부팅을 해보는 건 어떨까요?

재시동을 해봤는데 문제가 해결되지 않았습니다. 이제 로컬 머신(로컬 Docker)에서도 같은 문제가 발생하고 있네요… 그래서 제가 명령어를 어딘가에서 잘못 실행하고 있는 건 아닌지 의심이 듭니다.

그리고 감사합니다 – 빠른 답변과 지원을 정말 높이 평가합니다!

네, 이제 알겠습니다. 스크립트를 root로 실행했지만 discourse 사용자로 실행하지 않았습니다:

./launcher enter app
cd /var/www/discourse
su discourse
bundle exec ruby script/import_scripts/import.rb

도와주셔서 감사합니다 @pfaffman <3

음. 아마도 뭔가 바뀌었나 봅니다. Discourse를 사용하면서 import 스크립트를 실행하지 않은 것 같습니다. 잘하셨습니다!