En la última beta de Discourse, instalación con Docker y multisitio.
Estoy intentando restaurar una copia de seguridad con la base de datos original REDACTED a la base de datos actual db8015. Las cargas terminan en default, tanto en el sistema de archivos como en la base de datos.
Esto ocurre tanto cuando la restauración se activa desde la interfaz gráfica como cuando se realiza desde la línea de comandos usando RAILS_DB=db8015 RAILS_ENV=production script/discourse restore.
[INICIADO]
¡'DHSupport' ha comenzado la restauración!
Marcando la restauración como en curso...
Asegurando que existe /var/www/discourse/tmp/restores/db8015/2019-10-11-104940...
Copiando el archivo comprimido al directorio tmp...
Descomprimiendo el archivo comprimido, esto puede tardar un rato...
No hay archivo de metadatos para extraer.
Validando metadatos...
Versión actual: 20191007140446
Versión restaurada: 20190908234054
Extrayendo el archivo volcado...
Creando funciones faltantes en el esquema discourse_functions
No se puede restaurar en un esquema diferente, restaurando in-place
Habilitando el modo solo lectura...
Pausando sidekiq...
[se eliminó mucho contenido irrelevante]
Limpiando la caché de temas
Extrayendo cargas...
Reasignando cargas...
Reasignando 'uploads/REDACTED' a 'uploads/default'
Optimizando iconos del sitio...
Las publicaciones serán recocidas por un trabajo en segundo plano en sidekiq. Verás imágenes faltantes hasta que eso se complete.
Puedes acelerar el proceso ejecutando manualmente "rake posts:rebake_uncooked_posts"
Ejecutando el after_restore_hook...
Limpiando cosas...
Eliminando función del esquema discourse_functions
Eliminando el directorio tmp '/var/www/discourse/tmp/restores/db8015/2019-10-11-104940'...
Reanudando sidekiq...
Marcando la restauración como finalizada...
He dedicado un tiempo a este error y quería actualizaros con mis hallazgos. Básicamente, he confirmado todo lo que ya habíais dicho: el proceso de restauración es el siguiente:
El problema es que, tras la tarea de migración, reconnect_database no cambia a la base de datos deseada, sino que comienza a trabajar con la predeterminada.
Una solución chapucera sería usar aquí @current_db, que aún contiene el nombre correcto, en lugar de RailsMultisite::ConnectionManagement.current_db, pero esto no resuelve el problema real de por qué reconnect_database no funciona correctamente.
Necesito profundizar más para encontrar el problema.
Tienes razón. Eliminé Rake::Task["db:migrate"].invoke de restorer.rb y obtuve la base de datos correcta durante todo el proceso. Estás un paso por delante de mí; mi plan ahora es entrar en la tarea de migración y ver qué paso está rompiendo el proceso. Gracias por señalar _dump; iré directamente allí para ver qué está ocurriendo dentro.
Se fusionó la corrección, gracias por detectar ese problema. Se agregó ese comando de volcado porque había un problema con las migraciones multisitio. Creo que no debería importar qué base de datos estemos usando para volcar la estructura, ya que todos los multisitios deberían tener la misma estructura.