Restore fallisce con "hotlinked_media_status" già esistente

Continuando la discussione da Upgrade fails on duplicate key error (“index post hotlinked media on post id and url md5”):

Sto ora cercando di ripristinare da un sito di produzione a un sito di staging e sto ricevendo:

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

@david c’è qualche caso che ti sei in qualche modo perso quando l’hai risolto in precedenza (penso che stesse fallendo sulle migrazioni allora, e questo è un ripristino).

1 Mi Piace

Come state ripristinando il sito? Tramite l’interfaccia utente? CLI di discourse? psql diretto?

Dal prompt dei comandi ripristinando il backup più recente (ho scoperto questo trucco sed oggi, ma era lo stesso se copiavo/incollavo).

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

E il backup è su S3 ripristinato da una versione leggermente più vecchia:

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

a

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

Riesci a riprodurre il problema su un’altra installazione?

È piuttosto sorprendente che questo problema si verifichi più di 2 anni dopo, e senza altri report :thinking:

Forse no? Sono riuscito a ripristinare lo stesso backup sulla mia macchina di sviluppo.

Hai qualche idea su cosa potrei aver fatto per causare questo o su cosa posso fare per risolverlo? Ho eliminato il database e poi sono stato in grado di ripristinarlo. L’eliminazione del database è stata la soluzione effettiva, ma non merito una soluzione per un problema che (sembra) aver causato.

Questo argomento è stato chiuso automaticamente 30 giorni dopo l’ultima risposta. Non sono più consentite nuove risposte.

Una intuizione molto preziosa che ho appena avuto è che hotlinked_media_status sia semplicemente la prima cosa che accade nel file di ripristino. Se la rimuovi manualmente nel database esistente, il ripristino fallirà all’istruzione successiva (CREATE TABLE public.admin_notices).

Quindi non si tratta di quel tipo di definizione specifico. È solo un sintomo di un problema più grande, sospetto che BackupRestore.move_tables_between_schemas(MAIN_SCHEMA, BACKUP_SCHEMA) non riesca a fare ciò che deve fare.

1 Mi Piace