Desculpe por trazer o tópico de volta mais uma vez. Estou recebendo um erro muito estranho:
discourse=# REINDEX SCHEMA CONCURRENTLY public;
ERROR: could not create unique index "index_tags_on_name_ccnew"
DETAIL: Key (name)=(chronicillness) is duplicated.
Estou supondo que possa ser corrigido com a solução sugerida acima pelo @riking, mas não consigo descobrir como modificar a sintaxe para atender ao meu caso.
Portanto, se você encontrar esse erro, há duas opções:
Você pode contornar o problema … neste caso, a tabela tags possui uma linha duplicada com o nome chronicillness.
Execute uma consulta no Explorador de Dados procurando pelas linhas: select * from tags where name = 'chronicillness.
Exclua a duplicata:
./launcher enter app
rails c
Tag.find_by(id: ID_YOU_FOUND_IN_DATA_EXPLORER).destroy
Se você tiver um backup do seu banco de dados e detalhes que gostaria de compartilhar com Peter… compartilhe com Peter, seja de forma privada ou na lista de e-mails do PG.
discourse=# REINDEX SCHEMA CONCURRENTLY public;
AVISO: não foi possível reindexar o índice inválido "public.tags_pkey_ccnew" concorrentemente, ignorando
AVISO: não foi possível reindexar o índice inválido "public.index_tags_on_name_ccnew" concorrentemente, ignorando
AVISO: não foi possível reindexar o índice inválido "public.index_tags_on_lower_name_ccnew" concorrentemente, ignorando
AVISO: não foi possível reindexar o índice inválido "pg_toast.pg_toast_309322_index_ccnew" concorrentemente, ignorando
ERRO: não foi possível criar o índice único "index_tags_on_name_ccnew1"
DETALHE: A chave (name)=(time-management) está duplicada.
Então, todos os clones foram removidos e agora só restam esses avisos durante a reindexação:
discourse=# REINDEX SCHEMA CONCURRENTLY public;
AVISO: não é possível reindexar o índice inválido "public.tags_pkey_ccnew" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "public.index_tags_on_name_ccnew" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "public.index_tags_on_lower_name_ccnew" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "public.tags_pkey_ccnew1" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "public.index_tags_on_name_ccnew1" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "public.index_tags_on_lower_name_ccnew1" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "pg_toast.pg_toast_309322_index_ccnew" de forma concorrente, ignorando
AVISO: não é possível reindexar o índice inválido "pg_toast.pg_toast_309322_index_ccnew1" de forma concorrente, ignorando
REINDEX
Há algo que deva ser feito para eliminar esses avisos ou teremos que conviver com eles?
O método de recuperação recomendado nesses casos é excluir o índice inválido e tentar novamente executar REINDEX CONCURRENTLY. O índice concorrente criado durante o processamento tem um nome que termina com o sufixo ccnew, ou ccold se for uma definição antiga de índice que não conseguimos excluir. Índices inválidos podem ser excluídos usando DROP INDEX, incluindo índices toast inválidos.