Échec de la restauration de la sauvegarde

Cela ressemble à une installation non standard de votre ancien serveur. Quoi qu’il en soit, voici un bref résumé de ce qui s’est produit : un index de votre ancien serveur s’est corrompu au fil des ans (cela peut arriver après des mises à jour du système d’exploitation), si bien que deux lignes identiques se sont glissées dans la table incoming_referers. La sauvegarde les copie telles quelles, et le nouveau serveur les refuse ensuite. Nous devons donc d’abord corriger le problème sur l’ancien serveur, puis créer une nouvelle sauvegarde.

Sur l’ANCIEN serveur, ouvrez la console Rails :

./launcher enter app
rails c

Ensuite, collez ces lignes, l’une après l’autre :

db = ActiveRecord::Base.connection.current_database
DB.exec("DELETE FROM incoming_referers a USING incoming_referers b WHERE a.id > b.id AND a.path = b.path AND a.incoming_domain_id = b.incoming_domain_id")
DB.exec("REINDEX DATABASE #{ActiveRecord::Base.connection.quote_table_name(db)}")

Cela supprimera les doublons et reconstruira tous les index (au cas où d’autres tables seraient également affectées).

Si REINDEX se termine sans erreur, tapez exit, effectuez une nouvelle sauvegarde sur l’ancien serveur, puis restaurez ce nouveau fichier. Si une erreur concernant une autre table s’affiche, collez-la simplement ici.