Lo siento por volver a subir esto una vez más, obtuve un error muy extraño
discourse=# REINDEX SCHEMA CONCURRENTLY public;
ERROR: could not create unique index "index_tags_on_name_ccnew"
DETAIL: Key (name)=(chronicillness) is duplicated.
Asumo que se puede solucionar con la solución sugerida anteriormente por @riking, pero no logro averiguar cómo modificar la sintaxis para adaptarla a mi caso.
Puedes evitar el problema… en este caso, la tabla tags tiene una fila duplicada con el nombre chronicillness.
Ejecuta una consulta en el explorador de datos buscando las filas: select * from tags where name = 'chronicillness'
Elimina el duplicado:
./launcher enter app
rails c
Tag.find_by(id: ID_ENCONTRADO_EN_EXPLORADOR_DE_DATOS).destroy
Si tienes una copia de seguridad de tu base de datos y detalles que te gustaría compartir con Peter… compártelos con Peter, ya sea de forma privada o en la lista de correo de PG.
Así que tengo una copia de seguridad generada por Discourse de PostgreSQL 10. ¿Eso será útil? ¿Puedo simplemente extraer la parte de PostgreSQL del archivo y enviarla?
No estoy seguro… lo que probablemente Peter necesite es que detengas tu base de datos y copies todo el contenido de la carpeta que contiene la base de datos.
La mejor manera de averiguarlo es enviándole un correo electrónico.
discourse=# REINDEX SCHEMA CONCURRENTLY public;
ADVERTENCIA: no se puede reindexar el índice inválido "public.tags_pkey_ccnew" de forma concurrente, omitiendo
ADVERTENCIA: no se puede reindexar el índice inválido "public.index_tags_on_name_ccnew" de forma concurrente, omitiendo
ADVERTENCIA: no se puede reindexar el índice inválido "public.index_tags_on_lower_name_ccnew" de forma concurrente, omitiendo
ADVERTENCIA: no se puede reindexar el índice inválido "pg_toast.pg_toast_309322_index_ccnew" de forma concurrente, omitiendo
ERROR: no se pudo crear el índice único "index_tags_on_name_ccnew1"
DETALLE: La clave (name)=(time-management) está duplicada.
Así que todos los clonadores han desaparecido y solo me quedan estas advertencias al reindexar:
discourse=# REINDEX SCHEMA CONCURRENTLY public;
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.tags_pkey_ccnew", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.index_tags_on_name_ccnew", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.index_tags_on_lower_name_ccnew", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.tags_pkey_ccnew1", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.index_tags_on_name_ccnew1", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "public.index_tags_on_lower_name_ccnew1", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "pg_toast.pg_toast_309322_index_ccnew", omitiendo
ADVERTENCIA: no se puede reindexar concurrentemente el índice inválido "pg_toast.pg_toast_309322_index_ccnew1", omitiendo
REINDEX
¿Hay algo que deba hacerse para eliminar estas advertencias o tendremos que convivir con ellas?
El método de recuperación recomendado en estos casos es eliminar el índice inválido e intentar nuevamente ejecutar REINDEX CONCURRENTLY. El índice concurrente creado durante el procesamiento tiene un nombre que termina con el sufijo ccnew, o ccold si se trata de una definición de índice antigua que no logramos eliminar. Los índices inválidos se pueden eliminar usando DROP INDEX, incluidos los índices toast inválidos.