فشل استعادة قاعدة البيانات

لقد كنت أحاول استعادة نسخة احتياطية إلى خادم جديد، وقد ظهرت بعض الأخطاء.

السجل موجود هنا: Ubuntu Pastebin

ربما يكون الخطأ كالتالي:

PG::UniqueViolation: ERROR:  could not create unique index "unique_index_categories_on_slug"
DETAIL:  Key (COALESCE(parent_category_id, '-1'::integer), slug)=(5, ) is duplicated.

ظننت أن المشكلة قد تكون في قاعدة البيانات، لكنني لم أقم بتعديلها. لقد قمت فقط بتحميل ملف النسخ الاحتياطي بصيغة tar واستعدته بشكل خاطئ.

الرجاء المساعدة!

هناك موضوع آخر يعاني من مشكلة مماثلة.

إنها مشكلة غريبة.

حلها العديد منا بمجرد المحاولة المتكررة.

جرّب عدة مرات، وقد لا تظهر الخطأ في إحدى المحاولات.

قد تكون مشكلتك مختلفة، لكنها تشبه أخطاء قاعدة البيانات التي واجهناها أثناء الاستعادة.

يبدو أن هناك خللاً في سكريبتات الاستعادة أو نوعًا ما من الأخطاء في نظام قاعدة بيانات PostgreSQL المستخدم.

كم يبدو هذا الحل غريباً… يا إلهي
هل يمكن تعديل ملف SQL لجعله طبيعياً؟

أعني، هل توجد طريقة لتجاهل المفتاح المكرر؟

وبعد إعادة البناء إلى إصدار سابق أو إصدار تجريبي، تحول سجل الأخطاء إلى:

EXCEPTION: Compression::Strategy::ExtractFailed[2019-10-16 07:53:52] /var/www/discourse/lib/compression/strategy.rb:89:in `block in extract_file'
/var/www/discourse/lib/compression/strategy.rb:85:in `open'
/var/www/discourse/lib/compression/strategy.rb:85:in `extract_file'
/var/www/discourse/lib/compression/strategy.rb:26:in `block (2 levels) in decompress'
/usr/local/lib/ruby/site_ruby/2.6.0/rubygems/package/tar_reader.rb:65:in `each'
/var/www/discourse/lib/compression/strategy.rb:18:in `block in decompress'
/var/www/discourse/lib/compression/tar.rb:26:in `get_compressed_file_stream'
/var/www/discourse/lib/compression/strategy.rb:15:in `decompress'
/var/www/discourse/lib/compression/pipeline.rb:26:in `block in decompress'
/var/www/discourse/lib/compression/pipeline.rb:24:in `each'
/var/www/discourse/lib/compression/pipeline.rb:24:in `reduce'
/var/www/discourse/lib/compression/pipeline.rb:24:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:141:in `decompress_archive'
/var/www/discourse/lib/backup_restore/restorer.rb:60:in `run'
/var/www/discourse/lib/backup_restore.rb:166:in `block in start!'
/var/www/discourse/lib/backup_restore.rb:163:in `fork'
/var/www/discourse/lib/backup_restore.rb:163:in `start!'
/var/www/discourse/lib/backup_restore.rb:22:in `restore!'
/var/www/discourse/app/controllers/admin/backups_controller.rb:119:in `restore'

لماذا يُعد ذلك مشكلة؟ لم أقم بأي تغييرات على ملف tar.

ألقِ نظرة على:

شكرًا جزيلاً لك على هذا الأمر المتعلق بالاستخراج!

هل يمكنك مساعدتي في خطأ المفتاح المكرر؟ أو هل هناك طريقة يمكنني من خلالها إصلاح هذا الاستعلام في psql؟

@daniel أعتقد أن عملية الترحيل في FIX: Add unique index to prevent duplicate slugs for categories · discourse/discourse@c71da3f · GitHub يجب أن تتأكد من أن قيم العمود فريدة من نوعها قبل إنشاء الفهرس الفريد.

@Rasin، تم إصلاح هذه المشكلة الآن اعتبارًا من:

شكرًا لك على لفت انتباهنا إلى هذا الأمر، ونعتذر عن أي إزعاج قد تسببنا فيه. لا تتردد في إخبارنا إذا واجهت أي مشاكل أخرى.

نعم، لقد أخبرتك: الأمر غريب.

لكنه نجح مع عدد منا كما يمكنك قراءته هنا:

لا أعرف ما إذا كانت وضعيتك هي نفسها، فالخطأ متشابه لكنه ليس مطابقًا تمامًا.

ذكر @usulrasolas أنه عدّل السكربت بجملات SQL لإصلاحه.

أما أنا (وآخرون) فلم نقم بأي تغيير، بل جربنا عدة محاولات.

الأمر غريب، أعرف، لكن قد تكون هناك مشاكل تتعلق بالتوقيت أو انتهاء المهلة.

لا نعلم ذلك.
المطورون يبحثون في الأمر.

شكرًا لك على جميع اقتراحاتك! نتطلع إلى التحديثات الجديدة.