Importación fallida con `could not create unique index`

¡Bien, lo logramos y ya estamos de nuevo en línea! Gracias por los consejos, @Falco.

Para ayudar a otras personas con sus problemas, aquí les dejamos un desglose de lo que hicimos.

Teníamos varios índices corruptos que provocaron que la importación fallara. Logramos solucionarlo eliminando manualmente los duplicados. También teníamos 8 usuarios con un username_lower duplicado (demasiados “mike” y “marco”). Los renombramos actualizando tanto username como username_lower. A partir de los datos de los usuarios, notamos que la primera corrupción ocurrió en diciembre de 2019.

En lugar de seguir el ciclo de “hacer copia de seguridad” → “restaurar copia de seguridad” → “fallar por duplicados” → “arreglar”, decidimos reindexar todos los índices. Encontramos todos los índices con restricciones de unicidad con la siguiente consulta:

select idx.relname as index_name, 
       insp.nspname as index_schema,
       tbl.relname as table_name,
       tnsp.nspname as table_schema
from pg_index pgi
  join pg_class idx on idx.oid = pgi.indexrelid
  join pg_namespace insp on insp.oid = idx.relnamespace
  join pg_class tbl on tbl.oid = pgi.indrelid
  join pg_namespace tnsp on tnsp.oid = tbl.relnamespace
where pgi.indisunique --<< solo índices únicos
  and tnsp.nspname = 'public'

Una vez que todos los índices funcionaron, pudimos hacer una copia de seguridad e importarla correctamente en la nueva instancia. Las migraciones se ejecutaron como se esperaba, intercambiamos las instancias y volvimos a estar operativos :+1: ¡Salud por la resistencia de Discourse! :beers:

Gracias de nuevo, @Falco.

Que tengan un buen fin de semana :slight_smile: