Импорт не удаётся: «не удалось создать уникальный индекс»

Отлично, мы выбрались и снова онлайн. Спасибо за подсказки, @Falco.

Чтобы помочь другим с их проблемами, вот подробный разбор того, что мы сделали.

У нас было несколько повреждённых индексов, из-за чего импорт не удавался. Нам удалось исправить это, удалив дубликаты вручную. Также у 8 пользователей были дублирующиеся значения username_lower (слишком много Mike и Marco). Мы переименовали их, обновив и username, и username_lower. Из данных пользователей мы увидели, что первое повреждение произошло в декабре 2019 года.

Вместо цикла «создать резервную копию» → «восстановить из резервной копии» → «ошибка из-за дубликатов» → «исправить», мы решили перестроить все индексы. Мы нашли все индексы с уникальными ограничениями с помощью следующего запроса:

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 --<< только уникальные индексы
  and tnsp.nspname = 'public'

Как только все индексы заработали, мы смогли сделать резервную копию и успешно импортировать её в новый экземпляр. Миграции прошли как ожидалось, мы переключили экземпляры и всё заработало :+1: За устойчивость Discourse :beers:

Ещё раз спасибо, @Falco.

Хороших выходных :slight_smile: