Rasin
(Rasin)
16.Октябрь.2019 06:38:28
1
Я пытался восстановить резервную копию на новый сервер, но возникли ошибки.
Лог находится здесь: Ubuntu Pastebin
Ошибка, возможно, следующая:
PG::UniqueViolation: ERROR: could not create unique index "unique_index_categories_on_slug"
DETAIL: Key (COALESCE(parent_category_id, '-1'::integer), slug)=(5, ) is duplicated.
Я подумал, что это проблема с БД, но я не вносил в неё изменений. Я просто скачал архив резервной копии, но восстановил его неправильно.
Пожалуйста, помогите!
ariznaf
(fernando)
16.Октябрь.2019 07:02:46
2
Существует другая ветка с похожей проблемой.
Это странная проблема.
Многие из нас решили её, просто продолжая попытки.
Попробуйте несколько раз, и, возможно, в один из разов ошибка не возникнет.
Возможно, ваша проблема отличается, но она похожа на ошибки базы данных, с которыми мы сталкивались при восстановлении.
Похоже, что в скриптах восстановления есть ошибка или какой-то сбой в используемой системе базы данных PostgreSQL.
Rasin
(Rasin)
16.Октябрь.2019 07:12:49
3
Насколько странно это решение… Блин!
Можно ли отредактировать SQL-файл, чтобы всё было нормально?
Я имею в виду, есть ли способ игнорировать дублирующиеся ключи?
Rasin
(Rasin)
16.Октябрь.2019 07:57:06
4
А после отката к предыдущей версии или бета-версии лог стал следующим:
EXCEPTION: Compression::Strategy::ExtractFailed[2019-10-16 07:53:52] /var/www/discourse/lib/compression/strategy.rb:89:in `block in extract_file'
/var/www/discourse/lib/compression/strategy.rb:85:in `open'
/var/www/discourse/lib/compression/strategy.rb:85:in `extract_file'
/var/www/discourse/lib/compression/strategy.rb:26:in `block (2 levels) in decompress'
/usr/local/lib/ruby/site_ruby/2.6.0/rubygems/package/tar_reader.rb:65:in `each'
/var/www/discourse/lib/compression/strategy.rb:18:in `block in decompress'
/var/www/discourse/lib/compression/tar.rb:26:in `get_compressed_file_stream'
/var/www/discourse/lib/compression/strategy.rb:15:in `decompress'
/var/www/discourse/lib/compression/pipeline.rb:26:in `block in decompress'
/var/www/discourse/lib/compression/pipeline.rb:24:in `each'
/var/www/discourse/lib/compression/pipeline.rb:24:in `reduce'
/var/www/discourse/lib/compression/pipeline.rb:24:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:141:in `decompress_archive'
/var/www/discourse/lib/backup_restore/restorer.rb:60:in `run'
/var/www/discourse/lib/backup_restore.rb:166:in `block in start!'
/var/www/discourse/lib/backup_restore.rb:163:in `fork'
/var/www/discourse/lib/backup_restore.rb:163:in `start!'
/var/www/discourse/lib/backup_restore.rb:22:in `restore!'
/var/www/discourse/app/controllers/admin/backups_controller.rb:119:in `restore'
Почему это проблема? Я ничего не менял в tar-файле.
Rasin
(Rasin)
16.Октябрь.2019 12:46:28
6
Большое спасибо за эту функцию извлечения!
Не могли бы вы помочь мне с ошибкой дублирования ключа? Или есть способ исправить этот SQL в psql?
gerhard
(Gerhard Schlager)
16.Октябрь.2019 13:39:25
7
Rasin:
Возможно, ошибка заключается в следующем:
PG::UniqueViolation: ERROR: could not create unique index "unique_index_categories_on_slug"
DETAIL: Key (COALESCE(parent_category_id, '-1'::integer), slug)=(5, ) is duplicated.
@daniel , я думаю, что в миграции по ссылке FIX: Add unique index to prevent duplicate slugs for categories · discourse/discourse@c71da3f · GitHub необходимо убедиться, что значения столбца уникальны, прежде чем создавать уникальный индекс.
daniel
(Daniel Waterworth)
16.Октябрь.2019 14:36:42
8
@Rasin , это должно быть исправлено начиная с:
committed 02:02PM - 16 Oct 19 UTC
Slugs can be the empty string, but the added index didn't account for
that. This… commit changes the migration, stopping it from being unique
so that it can be applied everywhere and adds another migration that
recreates the index properly.
Спасибо, что обратили на это наше внимание, и приносим извинения за любые неудобства. Дайте нам знать, если у вас возникнут другие проблемы.
ariznaf
(fernando)
16.Октябрь.2019 21:52:34
9
Да, я уже говорил вам: это странная ситуация.
Но у нескольких из нас это сработало, как вы можете прочитать здесь:
Wow, trying to reproduce it so I can be sure that things will go as planned on migration, and I have the error again? I’m going to continue to try and find the steps to reproduce a fix. Because I can’t reproduce it now.
Не знаю, совпадает ли ваша ситуация, так как ошибка похожа, но не совсем такая же.
@usulrasolas отметил, что он отредактировал скрипт, добавив SQL-запросы для исправления.
А я (и другие) ничего не меняли, просто пробовали несколько раз.
Это странно, я понимаю, но, возможно, дело в проблемах с таймингом или истечением времени.
Мы не знаем.
Разработчики изучают проблему.
Rasin
(Rasin)
17.Октябрь.2019 01:22:45
10
Спасибо за все ваши предложения! С нетерпением ждём новых обновлений.