Atualizando para a versão atual do Discourse hoje, a reconstrução está falhando e não tenho certeza do que está causando isso. A instalação estava várias iterações atrás (acho que 2.8x). A atualização da imagem do Docker correu bem quando fui atualizar o Discourse, fui solicitado a fazer um pull manual e reconstruir (na maioria das vezes sou solicitado a isso), no entanto, a reconstrução foi malsucedida.
Aqui estão os resultados de uma pesquisa por “error” usando discourse-doctor. Desculpas pelas capturas de tela, o cliente VNC baseado na web que tenho não parece suportar copiar/colar.
Estou preso em como iniciar a reindexação. Consegui iniciar (embora não seja acessível pela web) e entrar no aplicativo, mas sem sucesso em avançar a partir daí.
Acho que o sudo não funcionaria, mas o su funcionou e agora estou mexendo no postgres.
Então, agora preciso descobrir como corrigir as duplicatas. A consulta parece ser…
UPDATE users SET username_lower = 'xxx' WHERE id = xxx;
Tentei algumas variações sem sucesso. Como você pode ver, não tenho 100% de certeza sobre a sintaxe correta aqui, pois o erro está relacionado a colunas.
Expandindo o que @Canapin disse, caso você ainda não tenha descoberto, deve ser simples tornar os nomes de usuário únicos, já que você já estabeleceu que racerx é o único nome de usuário duplicado.
Primeiro, se você ainda não o fez, certifique-se de que racerx2 ainda não exista para que você não esteja apenas movendo o problema para um nome de usuário diferente: (Se você obtiver um id, tente um nome de usuário diferente.)
SELECT id FROM users WHERE username_lower = 'racerx2';
Assim que tiver um nome de usuário não utilizado, obtenha os IDs das contas duplicadas de racerx:
SELECT id from users WHERE username_lower = 'racerx';
Escolha um, não importa qual, embora eu usasse o maior, então altere seu nome de usuário: (Substituindo racerx2 por um nome de usuário diferente, se necessário, e 12345 com o ID de racerx que você escolheu.)
UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
Atualização (Estava nos rascunhos há alguns dias, desculpe) Parece que consegui resolver. Não tenho certeza se o que fiz foi a abordagem correta, mas a reconstrução foi bem-sucedida.
Achei difícil modificar/anexar o valor do racerx na coluna username_lower usando a sintaxe, então fui por outro caminho. pesquisando os IDs das linhas e modificando o valor do username_lower em uma linha específica.
Primeiro, tentei obter um relatório de quaisquer linhas na tabela de usuários que tivessem “racerx” na coluna username_lower.
select all from users where username_lower ='racerx';
Com base nisso, decidi modificar racerx para racerx2, não me lembro exatamente o que digitei para fazer isso acontecer. Acho que foi UPDATE SET from users username_lower racerx to racerx2