يبدو أن هناك تصادمًا في قيود جدول التحليلات في PostgreSQL. قاعدة بياناتك تحتوي بالفعل على سجلات للمجال الجديد في تواريخ محددة، لذا فمن المرجح أن أداة إعادة التعيين (remap tool) تنشئ نسخًا مكررة، ويقوم PostgreSQL برفضها.
أقترح أن تحاول حذف سجلات المجال القديم من الجدول المحدد فقط للتواريخ التي يحتوي فيها المجال الجديد بالفعل على بيانات، وذلك للحفاظ على البيانات التاريخية وإلغاء حظر أداة إعادة التعيين. لكن قم بعمل نسخة احتياطية أولاً.
جرب هذا:
cd /var/discourse
./launcher enter app
# إنشاء نسخة احتياطية
discourse backup
# الدخول إلى وحدة تحكم قاعدة البيانات
sudo -u postgres psql discourse
/* العثور على اسم الجدول الدقيق المرتبط بهذا الفهرس */
SELECT tablename
FROM pg_indexes
WHERE indexname = 'idx_bprd_rollups_date_referrer_unique';
بافتراض أن الاستعلام أعلاه يعيد browser_pageview_rollup_details، استخدم اسم الجدول هذا في الاستعلام التالي
/* حذف سجلات التحليلات المتصادمة */
DELETE FROM browser_pageview_rollup_details
WHERE normalized_referrer = 'discourse.tobiaseigen.org'
AND date IN (
SELECT date
FROM browser_pageview_rollup_details
WHERE normalized_referrer = 'digitallysovereign.org'
);
/* الخروج من PostgreSQL */
\q
ثم قم بتشغيل أداة إعادة التعيين مرة أخرى
discourse remap discourse.tobiaseigen.org digitallysovereign.org
ثم استخدم مهمة rake rebake_match بدلاً من إعادة الخبز الكامل
# إعادة خبز المنشورات التي تحتوي على سلسلة المجال الجديد فقط
rake posts:rebake_match["digitallysovereign.org"]