Tengo el siguiente problema. Llevo más de 10 años administrando un foro de Discourse y, como no he podido instalar actualizaciones desde hace algún tiempo, quería configurar un nuevo servidor:
El servidor antiguo está ejecutando: 3.4.0.beta4-dev
El nuevo servidor: Última versión
La copia de seguridad ya tiene un tamaño de 673,2 MB como archivo .gz, sin incluir las subidas.
Desafortunadamente, la restauración sigue fallando. El archivo de registro contiene este error:
[2026-06-16 07:54:52] ERROR: no se pudo crear el índice único "index_incoming_referers_on_path_and_incoming_domain_id"
[2026-06-16 07:54:52] DETALLE: La clave (path, incoming_domain_id)=(//, 5) está duplicada.
[2026-06-16 07:54:52] EXCEPCIÓN: psql falló: DETALLE: La clave (path, incoming_domain_id)=(//, 5) está duplicada.
[2026-06-16 07:54:52] /var/www/discourse/lib/backup_restore/database_restorer.rb:93:in 'BackupRestore::DatabaseRestorer#restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in 'BackupRestore::DatabaseRestorer#restore'
/var/www/discourse/lib/backup_restore/restorer.rb:61:in 'BackupRestore::Restorer#run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in 'Object#restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in 'bloque en '
/var/www/discourse/script/spawn_backup_restore.rb:4:in 'Kernel#fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in ''
[2026-06-16 07:54:52] Intentando revertir...
¿Qué puedo hacer para solucionar este problema y no perder los últimos 10 años de datos?
La tabla incoming_referers rastrea las rutas de URL que derivaron a los visitantes en tu foro. Tiene un índice único, lo que significa que no pueden haber dos filas con la misma combinación de ruta + dominio.
Tu base de datos tiene dos filas con path='//' e incoming_domain_id=5. Cuando intenta reconstruir este índice único durante la restauración, encuentra el duplicado y cancela toda la transacción de restauración.
Así que necesitarás encontrar y limpiar ese incoming_referers duplicado y luego hacer una nueva copia de seguridad para restaurar en el nuevo servidor.
Lo siento por molestarte, pero creo que estoy haciendo algo mal. Después de ejecutar el comando “discourse=# select * from incoming_referers where path LIKE ‘%/search/’ ORDER BY incoming_domain_id;”, obtengo un error de sintaxis.
Vale, ahora también he instalado “apt install postgresql-client-common”. Sin embargo, sigo obteniendo el error “Error: Debe instalar al menos un paquete postgresql-client-.”
Lo siento muchísimo por haber actuado de forma tan tonta.
Ya he instalado Rails y parece que ha funcionado. También lo ejecuté con «rails c». Eso también parece funcionar, pero cuando introduzco el comando, aparece así:
“root@community:/var/discourse# ActiveRecord::Base.connection.execute(<<~SQL)
-bash: error de sintaxis cerca del token inesperado «<<’
root@community:/var/discourse# SELECT id, path, incoming_domain_id
SELECT: comando no encontrado
root@community:/var/discourse# FROM incoming_referers
FROM: comando no encontrado
root@community:/var/discourse# WHERE path = ‘//’
WHERE: comando no encontrado
root@community:/var/discourse# AND incoming_domain_id = 5
AND: comando no encontrado
root@community:/var/discourse# SQL”
No te preocupes, quizás mis instrucciones no sean tan buenas
Digo que me confundo cuando dices que acabas de instalar Rails y no puedes acceder a tu base de datos. Quizás sea todo diferente porque es una versión más antigua, pero creo que yo también me he quedado sin ideas.
En cualquier caso, una vez que estés en Rails, el indicador debería ser diferente, así que por tu salida, parece que aún no estás en la consola de Rails.
Ni siquiera creo que estés dentro del contenedor real. ¿Has ejecutado ./launcher enter app?