[Site Fora do Ar :(] Falha na Atualização\Reconstrução - Problema de Migração de Banco de Dados?

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.

image

Parece que ele pensa que você tem dois usuários chamados racerx. Acho que há um tópico sobre um problema semelhante aqui:

Também um mais recente aqui:

4 curtidas

Obrigado, vou começar por esse caminho… me deseje sorte..

1 curtida

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í.

image

2 curtidas

Você precisa executar esses comandos dentro do contêiner. Algo como

./launcher start app
./launcher enter app

Antes de sudo postgres

Editar: ah, você entrou no contêiner.

Esse postgres -c precisa de sudo antes dele.

4 curtidas

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.

Vou continuar investigando. Ainda não sei quantos duplicados eu tenho…

/edit… é só o racerx. DROGA RACERX!

image

2 curtidas

Você descobriu como consertar isso?

Eu retornaria o ID dos usuários (que é único) também para identificá-los corretamente e, em seguida, renomearia um desses dois usuários :slight_smile:

4 curtidas

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;
3 curtidas

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

2 curtidas

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