Problemas na execução de scripts de importação/migração

Consegui migrar um fórum para o Disourcse com um script personalizado anteriormente, mas agora, ao executá-lo novamente, recebo o seguinte erro de importação:

/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': Não conseguimos encontrar seu banco de dados: discourse. Que pode ser encontrado no arquivo de configuração do banco de dados localizado em config/database.yml. (ActiveRecord::NoDatabaseError)

Para resolver este problema:

- Você criou o banco de dados para este aplicativo ou o excluiu? Talvez você precise criar seu banco de dados.
- O nome do banco de dados mudou? Verifique se a configuração do seu database.yml tem o nome correto do banco de dados.

Para criar seu banco de dados, execute:

        bin/rails db:create

A seguinte importação no meu script falha:

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

Eu executo o script com:

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

Eu realmente não entendo o erro: consigo acessar o banco de dados através de sudo -u postgres psql discourse, validando que o banco de dados “discourse” existe. Além disso, o site está funcionando bem. Quando abro rails c, também consigo acessar os dados.

Você pode me dar algumas dicas sobre o que está errado?

O Discourse não consegue encontrar seu banco de dados. Então você precisa consertar isso. Foi uma instalação padrão ou uma instalação de desenvolvimento? Dê uma olhada no guia apropriado e faça o Discourse funcionar como o primeiro passo.

Instalação padrão, seguindo https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md

A única coisa que fiz (que consigo pensar agora) desde que funcionou da última vez foi reverter para backups.

O que me confunde sobre o erro é que todo o resto funciona. O site funciona perfeitamente. Apenas o script de importação falha.

E você está executando o script dentro do contêiner?

Sim, eu uso ./launcher enter app e tenho apenas uma configuração (app).

Ah. Desculpe. Você disse tudo isso no OP; eu não li muito bem!

Não consigo pensar em uma explicação. Talvez reiniciar?

Eu reiniciei e isso não resolveu o problema. Agora também me deparo com o mesmo problema na minha máquina local (docker local)… o que me faz pensar que de alguma forma eu executo o comando incorretamente…

E obrigado – celebro a rapidez das suas respostas e o suporte!

Sim, agora entendi. Eu executei o script como root, mas não como o usuário discourse:

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

Obrigado pelo suporte @pfaffman <3

3 curtidas

Hmm. Talvez algo tenha mudado, pois tenho certeza de que não tenho executado scripts de importação como o discourse usado. Bom trabalho!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.