La restauración falla con "hotlinked_media_status" ya existe

Continuando la discusión de La actualización falla con un error de clave duplicada (“index post hotlinked media on post id and url md5”):

Ahora estoy intentando restaurar desde un sitio de producción a un sitio de staging y estoy recibiendo:

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

@david, ¿hay algún caso que hayas pasado por alto cuando lo arreglaste antes (creo que estaba fallando en las migraciones entonces, y esto es una restauración)?

1 me gusta

¿Cómo está restaurando el sitio? ¿A través de la interfaz de usuario? ¿CLI de Discourse? ¿psql directo?

Desde la línea de comandos restaurando la copia de seguridad más reciente (descubrí este truco de sed hoy, pero fue lo mismo si lo copiaba y pegaba).

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

Y la copia de seguridad está en S3 restaurada de una versión ligeramente anterior:

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"

¿Puedes reproducir el problema en alguna otra instalación?

Es bastante sorprendente que este problema surja más de 2 años después, y sin ningún otro informe :thinking:

¿Quizás no? Pude restaurar esa misma copia de seguridad en mi entorno de desarrollo.

¿Tienes alguna idea de lo que pude haber hecho para causar esto o de lo que puedo hacer para solucionarlo? Eliminé la base de datos y luego pude restaurarla. Eliminar la base de datos fue la solución real, pero no merezco una solución para un problema que (parece que) causé.

Este tema se cerró automáticamente 30 días después de la última respuesta. Ya no se permiten nuevas respuestas.

Una idea muy valiosa que acabo de tener es que hotlinked_media_status es simplemente lo primero que ocurre en el archivo de restauración. Si lo eliminas manualmente en la base de datos existente, la restauración fallará en la siguiente instrucción (CREATE TABLE public.admin_notices).

Por lo tanto, no se trata de esa definición de tipo específica. Es solo un síntoma de un problema mayor, sospecho que BackupRestore.move_tables_between_schemas(MAIN_SCHEMA, BACKUP_SCHEMA) no hace lo que tiene que hacer.

1 me gusta