Je rencontre le problème suivant. J’exploite un forum Discourse depuis plus de 10 ans et, n’ayant pas pu installer de mises à jour depuis un certain temps, je souhaite configurer un nouveau serveur :
Serveur ancien : 3.4.0.beta4-dev
Nouveau serveur : Dernière version
La sauvegarde fait déjà 673,2 Mo au format .gz, hors fichiers uploadés.
Malheureusement, la restauration échoue systématiquement. Le fichier de journal contient cette erreur :
[2026-06-16 07:54:52] ERROR: could not create unique index “index_incoming_referers_on_path_and_incoming_domain_id”
[2026-06-16 07:54:52] DETAIL: Key (path, incoming_domain_id)=(//, 5) is duplicated.
[2026-06-16 07:54:52] EXCEPTION: psql failed: DETAIL: Key (path, incoming_domain_id)=(//, 5) is duplicated.
[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 ‘block in ’
/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] Trying to rollback...
Que puis-je faire pour résoudre ce problème sans perdre les 10 dernières années de données ?
La table incoming_referers suit les chemins d’URL qui ont dirigé les visiteurs vers votre forum. Elle possède un index unique, ce qui signifie qu’aucune deux lignes ne peuvent avoir la même combinaison de chemin + domaine.
Votre base de données contient deux lignes avec path='//' et incoming_domain_id=5. Lorsqu’elle tente de reconstruire cet index unique lors de la restauration, elle trouve la duplication et annule toute la transaction de restauration.
Vous devrez donc trouver et nettoyer cette duplication dans incoming_referers, puis créer une nouvelle sauvegarde à restaurer sur le nouveau serveur.
Désolé de vous déranger, mais je crois que je fais quelque chose de travers — après avoir exécuté la commande « discourse=# select * from incoming_referers where path LIKE ‘%/search/’ ORDER BY incoming_domain_id; », j’obtiens une erreur de syntaxe.
D’accord, j’ai maintenant également installé « apt install postgresql-client-common ». Cependant, je reçois toujours l’erreur « Error: You must install at least one postgresql-client- package. ».
Je suis vraiment, vraiment désolé d’avoir agi aussi bêtement.
J’ai maintenant installé Rails, et cela semble avoir fonctionné. Je l’ai également exécuté avec « rails c ». Cela semble également fonctionner, mais lorsque j’entre la commande, voici ce qui s’affiche :
« root@community:/var/discourse# ActiveRecord::Base.connection.execute(<<~SQL)
-bash: syntax error near unexpected token ‘`<<’
root@community:/var/discourse# SELECT id, path, incoming_domain_id
SELECT: command not found
root@community:/var/discourse# FROM incoming_referers
FROM: command not found
root@community:/var/discourse# WHERE path = ‘//’
WHERE: command not found
root@community:/var/discourse# AND incoming_domain_id = 5
AND: command not found
root@community:/var/discourse# SQL »
Ne t’inquiète pas, peut-être que mes instructions ne sont pas très claires
Je suis un peu perplexe quand tu dis que tu viens d’installer Rails et que tu n’arrives pas à accéder à ta base de données. Peut-être que tout est différent parce qu’il s’agit d’une version plus ancienne, mais là, je pense que je dépasse mes compétences.
Enfin, une fois que tu es dans Rails, l’invite de commande devrait être différente, donc d’après ton affichage, il semble que tu ne sois pas encore dans la console Rails.
Je ne pense même pas que tu sois dans le conteneur. As-tu exécuté ./launcher enter app ?