Rasin
(Rasin)
Outubro 16, 2019, 6:38am
1
Estava tentando restaurar meu backup em um novo servidor e alguns erros apareceram.
O log está aqui: Ubuntu Pastebin
O erro pode ser:
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.
Achei que pudesse ser um problema de banco de dados, mas não editei nada. Apenas baixei o backup em tar, mas restaurei de forma incorreta.
Por favor, ajude!
ariznaf
(fernando)
Outubro 16, 2019, 7:02am
2
Existe outro tópico com um problema semelhante.
É um problema estranho.
Muitos de nós o resolvemos apenas continuando a tentar.
Tente várias vezes e, talvez, em uma delas você não tenha o erro.
Pode ser que seu problema seja diferente, mas ele se assemelha aos erros de banco de dados que tivemos durante a restauração.
Parece haver um bug nos scripts de restauração ou algum tipo de bug no sistema de banco de dados PostgreSQL utilizado.
Rasin
(Rasin)
Outubro 16, 2019, 7:12am
3
Que solução mais estranha… FML
Será que é possível editar o arquivo SQL para deixá-lo normal?
Ou seja, existe alguma maneira de ignorar a chave duplicada?
Rasin
(Rasin)
Outubro 16, 2019, 7:57am
4
E, depois que reconstruí para uma versão anterior ou uma versão beta, o log passou a mostrar:
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'
Por que isso é um problema? Eu não alterei nada no arquivo tar.
Rasin
(Rasin)
Outubro 16, 2019, 12:46pm
6
Muito obrigado por essa coisa de extração!
Você poderia me ajudar com o erro de chave duplicada? Ou há uma maneira de eu corrigir esse SQL no psql?
gerhard
(Gerhard Schlager)
Outubro 16, 2019, 1:39pm
7
Rasin:
O erro pode ser:
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 Acredito que a migração em FIX: Add unique index to prevent duplicate slugs for categories · discourse/discourse@c71da3f · GitHub precise garantir que os valores da coluna sejam únicos antes de criar o índice único.
daniel
(Daniel Waterworth)
Outubro 16, 2019, 2:36pm
8
@Rasin , Isso já deve estar corrigido a partir de:
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.
Obrigado por trazer isso à nossa atenção e peço desculpas por qualquer inconveniente. Avise-nos se tiver outros problemas.
ariznaf
(fernando)
Outubro 16, 2019, 9:52pm
9
Sim, já te disse: é algo estranho.
Mas funcionou para vários de nós, como você pode ler aqui:
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.
Não sei se sua situação é a mesma, já que o erro é semelhante, mas não exatamente igual.
@usulrasolas comentou que editou o script com comandos SQL para corrigi-lo.
Mas eu (e outros) não alteramos nada, apenas tentamos várias vezes.
É estranho, eu sei, mas pode haver problemas de tempo ou expiração de tempo envolvidos.
Não sabemos.
Os desenvolvedores estão analisando o caso.
Rasin
(Rasin)
Outubro 17, 2019, 1:22am
10
Obrigado por todas as suas sugestões! Estamos ansiosos pelas novas atualizações.