Configurar o Discourse para usar um servidor PostgreSQL separado

Não senhor, sem problemas. Obrigado pelas informações

No meu caso, foi porque eu tinha scram-sha-256 e não trust como o mecanismo de autenticação.
Porque scram-sha-256 requer um usuário físico.
Você provavelmente pode contornar isso criando um mapa de usuários em pg_ident.conf, mas não tenho certeza de como.

Se por “usuário físico” você quer dizer “usuário do sistema Unix”, então não, scram-sha-256 não requer tal usuário configurado no sistema. O método peer requer um usuário do sistema, e trust é simplesmente uma péssima ideia em geral quando você está usando um servidor de banco de dados remoto.

1 curtida

Teremos que incluir o seguinte além do processo existente?

CREATE EXTENSION vector;

já que vejo esta extensão no template postgres do discourse_docker?

Isso é usado pelo plugin principal do Discourse AI, então você precisará dele se estiver usando-o.

Não me lembro de ter ativado esse plugin. Na verdade, acabei de verificar e ele está desativado. Mas recentemente, quando reconstruí a imagem, quando o último commit foi além deste commit - GitHub - discourse/discourse at 0eab7daea450e1d7e416c46a23aaaf95687d4855, rake db:migrate começou a falhar. Quando usei o commit anterior ao acima para inicializar, continuou funcionando.
Agora que ativei esta extensão, commits posteriores a este estão funcionando sem problemas.

1 curtida

Mas agora o plugin de IA está no núcleo, então você precisa da extensão independentemente de usar o plugin de IA (ou se esforçar para removê-lo explicitamente), certo?

1 curtida

Ah, é verdade, pois as migrações são executadas independentemente de o plugin estar habilitado.

2 curtidas

Ao usar um servidor PostgreSQL gerenciado como um usuário não superusuário, a migração do banco de dados falhará em EnablePgVectorExtension ('20230710171141'), mesmo que o vector tenha sido adicionado manualmente ao banco de dados. Existe uma maneira de desabilitar esta etapa de migração ou fazer uma verificação se o vector existe.

Causado por:
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: Como o vector não é uma extensão confiável, apenas membros de “azure_pg_admin” têm permissão para usar CREATE EXTENSION vector (ActiveRecord::StatementInvalid)
DICA: para saber como permitir uma extensão ou ver a lista de extensões permitidas, consulte Considerations with the Use of Extensions and Modules | Microsoft Learn

Nós mesclamos um PR para lidar com isso no mês passado, você está na versão mais recente?

1 curtida

Obrigado! Estou usando a imagem docker discourse/discourse:3.5.3. Não tenho certeza se ela inclui o PR mais recente? (Edição: A Release v2025.12.0 inclui o PR)

1 curtida

Aliás, há uma regressão de comportamento para instalação de atualização usando 2026.7.2

psql:/var/www/discourse/db/structure.sql:44: ERROR:  Because vector isn't a trusted extension, only members of "azure_pg_admin" are allowed to use CREATE EXTENSION vector
HINT:  to learn how to allow an extension or see the list of allowed extensions, please refer to https://go.microsoft.com/fwlink/?linkid=2301063

Você precisa se conectar a um usuário que possa instalar extensões. Isso varia de acordo com o provedor.

Obrigado pelas informações. Anteriormente (v2026.1) era possível ter uma conta de administrador separada para executar CREATE EXTENSION vector no banco de dados antes da migração integrada do Discourse ser executada. No entanto, a migração atual não verifica se o vector já existe. Isso evitaria conceder permissão de administrador à conta do banco de dados do Discourse.