Ошибка при импорте тем из Flarum (импорт пользователей и групп выполнен успешно)

Привет, друзья! Очень надеюсь, что кто-то сможет помочь мне с миграцией с Flarum на Discourse, над которой я работаю. Мне пришлось методом проб и ошибок восполнить огромный пробел в знаниях, и я исправил несколько ошибок, основываясь на предположениях, которые делает текущий импортер (например, префиксы таблиц в базе данных). После всего этого мне удалось импортировать и Категории, и Пользователей! :partying_face:

Но теперь у меня возникли проблемы с импортом самих Тем, которые, конечно же, являются одним из самых важных элементов. :grinning_face_with_smiling_eyes: И, к сожалению, я нахожу очень мало информации по конкретному сообщению об ошибке, которое получаю. Есть один старый топик здесь, в Meta, на который так и не последовало ответа, так что там помощи нет. Надеюсь, мне повезет больше. :grin:

Вот полное сообщение об ошибке. Часть внизу, похоже, указывает на корень проблемы. Указанное «дублирующее значение ключа» кажется очень размытым, поэтому я в тупике. Заранее спасибо за любые советы, которые вы сможете дать!

An error occurred while loading ./script/import_scripts/flarum_import.rb.
Failure/Error: return exec_without_profiling(*args, &blk) unless SqlPatches.should_measure?

PG::InFailedSqlTransaction:
  ERROR:  current transaction is aborted, commands ignored until end of transaction block
# ./script/import_scripts/base.rb:243:in `ensure in block in all_records_exist?'
# ./script/import_scripts/base.rb:243:in `block in all_records_exist?'
# ./script/import_scripts/base.rb:224:in `all_records_exist?'
# ./script/import_scripts/flarum_import.rb:122:in `block in import_posts'
# ./script/import_scripts/base.rb:874:in `block in batches'
# ./script/import_scripts/base.rb:873:in `loop'
# ./script/import_scripts/base.rb:873:in `batches'
# ./script/import_scripts/flarum_import.rb:101:in `import_posts'
# ./script/import_scripts/flarum_import.rb:32:in `execute'
# ./script/import_scripts/base.rb:47:in `perform'
# ./script/import_scripts/flarum_import.rb:162:in `<top (required)>'
# ------------------
# --- Caused by: ---
# PG::UniqueViolation:
#   ERROR:  duplicate key value violates unique constraint "import_ids_pkey"
#   DETAIL:  Key (val)=(3) already exists.
#   ./script/import_scripts/base.rb:231:in `block in all_records_exist?'
No examples found.


Finished in 0.00004 seconds (files took 5.56 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples

Похоже на повреждённый индекс, что удивительно. Какая у вас версия PostgreSQL? Скорее всего, стоит полностью очистить базу данных и попробовать снова. В любом случае, скорее всего, вам придётся делать это несколько раз, пока вы будете отлаживать другие проблемы с темами.

Другой вариант — попытаться перестроить этот индекс и удалять дублирующиеся записи, пока это не сработает.

Спасибо, Джей! К сожалению, я потерял эту установку Discourse из-за собственной неосмотрительности (неправильно работал с виртуальной машиной). Поэтому я не могу вернуться и проверить, ни выполнить рекомендованные вами шаги по устранению неполадок, что заставляет меня чувствовать себя довольно плохо и глупо. Но таковы дела.

Что я могу сказать, так это то, что я следовал инструкциям по установке Discourse на Ubuntu:

Так что версия PostgreSQL будет той, которая устанавливается этим способом. К этому моменту я уже несколько раз пытался выполнить импорт, не очищая базу данных между попытками, так что, возможно, это как-то связано с проблемой.

Я выбрал метод разработки в среде Ubuntu, а не подход с использованием Docker, потому что ранее, когда я пробовал его (на Digital Ocean), ни одна из инструкций, которые я находил о том, как сделать что-либо, не работала, поскольку, предположительно, всё находится внутри Docker/контейнеров и требует другого подхода.

К сожалению, я работаю на пределе своих знаний, но мне казалось, что стоит хотя бы попробовать сделать это самому. С таким серьёзным откатом и пониманием того, что впереди, вероятно, ещё много шагов по устранению неполадок, я думаю, что пришло время обратиться за профессиональной помощью. Поэтому я отправляюсь искать бюджет на это. :grinning_face_with_smiling_eyes:

Ещё раз спасибо за вашу помощь!

Отлично! Нет смысла разбираться, что произошло, если это не повторится.