A restauração falha com "hotlinked_media_status" já existe

Continuando a discussão de Falha na atualização com erro de chave duplicada (“index post hotlinked media on post id and url md5”):

Estou agora tentando restaurar de um site de produção para um site de staging e estou recebendo:

ERROR:  type "hotlinked_media_status" already exists
EXCEPTION: psql failed: ERROR:  type "hotlinked_media_status" already exists

@david existe alguma situação que você de alguma forma não considerou quando corrigiu isso antes (acho que estava falhando nas migrações então, e isso é uma restauração).

1 curtida

Como você está restaurando o site? Via UI? CLI do Discourse? psql direto?

Da linha de comando restaurando o backup mais recente (descobri esse truque de sed hoje, mas foi o mesmo se eu copiasse/colasse).

$(discourse restore |sed -n '3p')

E o backup está no S3 restaurado de uma versão ligeiramente mais antiga:

Discourse 3.4.0.beta1-dev - https://github.com/discourse/discourse version a3d61ba1c43931eb688f9b2b85c207b5bab02b8c

para

Discourse 3.4.0.beta2-dev - https://github.com/discourse/discourse version f405c021ebd36d5f11499159bd2b54098356a8f9"

Você consegue reproduzir o problema em qualquer outra instalação?

É bastante surpreendente que este problema surja mais de 2 anos depois, e sem nenhum outro relato :thinking:

Talvez não? Eu consegui restaurar esse mesmo backup na minha máquina de desenvolvimento.
Você tem alguma ideia do que eu possa ter feito para causar isso ou do que posso fazer para consertar? Eu excluí o banco de dados e então consegui restaurar. Excluir o banco de dados foi a solução real, mas eu não mereço uma solução para um problema que (aparentemente) causei.

Este tópico foi fechado automaticamente 30 dias após a última resposta. Novas respostas não são mais permitidas.

Uma percepção muito valiosa que acabei de ter é que hotlinked_media_status é simplesmente a primeira coisa que acontece no arquivo de restauração. Se você removê-lo manualmente no banco de dados existente, a restauração falhará na próxima instrução (CREATE TABLE public.admin_notices).

Portanto, não se trata desse tipo específico de definição. É apenas um sintoma de um problema maior, suspeito que BackupRestore.move_tables_between_schemas(MAIN_SCHEMA, BACKUP_SCHEMA) falha em fazer o que precisa fazer.

1 curtida