Existem algumas tags duplicadas devido a corrupção no banco de dados e não consigo mesclar

Como pode ser visto na imagem, em nossos fóruns existem algumas tags que são exatamente iguais!

Ao criar um tópico, você verá diferentes números de tópicos nessas tags:

Mas, ao escolher uma delas, ambas são selecionadas. Em seguida, ao clicar nas tags, ambas direcionam para a mesma página com tópicos semelhantes e números de tópicos idênticos. Assim, os administradores não conseguem mesclá-las ou excluir uma delas.

este é um exemplo de tópico em nosso fórum com dois conjuntos de tags duplicadas.

Tive um problema semelhante causado por um índice corrompido.

Não sei se isso vai ajudar Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes)

@neil alguma ideia sobre isso? é um efeito colateral dos sinônimos?

Improvável. Já vimos muitos índices corrompidos e plugins de terceiros defeituosos causarem isso.

Parece o mesmo que este tópico:

Existe um índice único na coluna de nome da tag, então não deveria ser possível ter tags duplicadas. Estou supondo que, se você executasse reindex table tags, isso falharia.

O processo de @pfaffman aqui é provavelmente o que você precisará fazer para remover as tags duplicadas e corrigir os índices.

esta é a lista de plugins que temos. Acredito que nenhum deles esteja relacionado às tags:

Eu já as removi manualmente! Ou melhor dizendo, consegui remover uma das duplicatas de cada par; e então a página da outra tag do par tornou-se inacessível (mesmo para administradores)! Ao tentar acessar a página, recebemos a mensagem “essa página não existe ou é privada”, embora haja vários tópicos com essa tag.

Um exemplo seria a tag یادگیری, que deveria conter 488 tópicos, mas a página da tag não existe (link para a página da tag):

image

P.S.: desculpe, as páginas e as tags não estão em inglês. Espero que isso ajude a esclarecer.

Parece que você fez isso pela interface, mas não é possível fazer dessa forma. Como o Jay fez, você precisa atualizar todos os tópicos que usam uma das tags para usar a outra, como no exemplo dele:

TopicTag.where(tag_id: 717).update_all(tag_id: 611)

Obrigado, existe algum comando para encontrar as tags corrompidas (aquelas que eu já alterei pela interface) e as tags duplicadas? Se sim, você pode me orientar?

Descrevi como fiz isso (ou algo similar) em Can't restore due to corrupt indexes (with some clues on how to deal with corrupt indexes) - #14 by pfaffman. Não é exatamente um tutorial, mas pode ajudar. Você precisará alternar entre o console do Rails e o psql, o que pode ser confuso ou intimidante se você não estiver familiarizado com ambos. Se não funcionar e você tiver orçamento, posso ter feito isso recentemente. :wink:

Não acho que a corrupção do índice seja causada por um plugin.
Tenho visto esse tipo de corrupção de índice do PSQL cinco vezes nos últimos meses, e quatro delas estavam usando configurações de idioma persa.

Eu também acho que isso é um bug, e o pior é que está acontecendo continuamente! Não importa se eu excluí duplicatas anteriores, novas duplicatas aparecem novamente. Se ajudar, posso remover os plugins não oficiais e verificar o surgimento de novas duplicatas.

Se fosse devido ao idioma persa, eu sugeriria que pode ser por causa de alguns alfabetos aparentemente semelhantes, mas basicamente diferentes, que diferentes teclados utilizam. Por exemplo, alguns dispositivos usam o alfabeto árabe e outros usam o persa. E nesses teclados temos ي e ی, que, quando usados em uma palavra, não é possível distingui-los (mas são diferentes na codificação).

Mas o caso do @Pfaffman era para índices em inglês, não persa!

Sim, esse é o único (e único) que não é em farsi que eu conheço.