يبدو أن خادمك القديم ليس تثبيتًا قياسيًا. على أي حال، إليك ملخص لما حدث: تضرر فهرس على خادمك القديم بمرور الوقت (وهو ما قد يحدث بعد ترقية نظام التشغيل)، مما سمح لصفحتين متطابقتين بالتسرب إلى جدول incoming_referers. تقوم النسخة الاحتياطية بنسخهما كما هما، ثم يرفض الخادم الجديد ذلك. لذا، سنقوم بإصلاح المشكلة على الخادم القديم أولاً، ثم ننشئ نسخة احتياطية جديدة.
على الخادم القديم، افتح وحدة تحكم Rails:
./launcher enter app
rails c
ثم الصق الأسطر التالية، واحدة تلو الأخرى:
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)}")
هذا الإجراء يزيل التكرار ويعيد بناء جميع الفهارس (في حال تأثرت جداول أخرى أيضًا).
إذا اكتملت عملية REINDEX دون ظهور خطأ، اكتب exit، ثم أنشئ نسخة احتياطية جديدة على الخادم القديم، واستعد الملف الجديد. وإذا ظهر خطأ يتعلق بجدول آخر، فقط انسخه وألصقه هنا.