Rasin
(Rasin)
16 أكتوبر 2019، 6:38ص
1
لقد كنت أحاول استعادة نسخة احتياطية إلى خادم جديد، وقد ظهرت بعض الأخطاء.
السجل موجود هنا: 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 واستعدته بشكل خاطئ.
الرجاء المساعدة!
ariznaf
(fernando)
16 أكتوبر 2019، 7:02ص
2
هناك موضوع آخر يعاني من مشكلة مماثلة.
إنها مشكلة غريبة.
حلها العديد منا بمجرد المحاولة المتكررة.
جرّب عدة مرات، وقد لا تظهر الخطأ في إحدى المحاولات.
قد تكون مشكلتك مختلفة، لكنها تشبه أخطاء قاعدة البيانات التي واجهناها أثناء الاستعادة.
يبدو أن هناك خللاً في سكريبتات الاستعادة أو نوعًا ما من الأخطاء في نظام قاعدة بيانات PostgreSQL المستخدم.
Rasin
(Rasin)
16 أكتوبر 2019، 7:12ص
3
كم يبدو هذا الحل غريباً… يا إلهي
هل يمكن تعديل ملف SQL لجعله طبيعياً؟
أعني، هل توجد طريقة لتجاهل المفتاح المكرر؟
Rasin
(Rasin)
16 أكتوبر 2019، 7:57ص
4
وبعد إعادة البناء إلى إصدار سابق أو إصدار تجريبي، تحول سجل الأخطاء إلى:
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.
Rasin
(Rasin)
16 أكتوبر 2019، 12:46م
6
شكرًا جزيلاً لك على هذا الأمر المتعلق بالاستخراج!
هل يمكنك مساعدتي في خطأ المفتاح المكرر؟ أو هل هناك طريقة يمكنني من خلالها إصلاح هذا الاستعلام في psql؟
gerhard
(Gerhard Schlager)
16 أكتوبر 2019، 1:39م
7
Rasin:
ربما يكون الخطأ:
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.
@daniel أعتقد أن عملية الترحيل في FIX: Add unique index to prevent duplicate slugs for categories · discourse/discourse@c71da3f · GitHub يجب أن تتأكد من أن قيم العمود فريدة من نوعها قبل إنشاء الفهرس الفريد.
daniel
(Daniel Waterworth)
16 أكتوبر 2019، 2:36م
8
@Rasin ، تم إصلاح هذه المشكلة الآن اعتبارًا من:
committed 02:02PM - 16 Oct 19 UTC
Slugs can be the empty string, but the added index didn't account for
that. This… commit changes the migration, stopping it from being unique
so that it can be applied everywhere and adds another migration that
recreates the index properly.
شكرًا لك على لفت انتباهنا إلى هذا الأمر، ونعتذر عن أي إزعاج قد تسببنا فيه. لا تتردد في إخبارنا إذا واجهت أي مشاكل أخرى.
ariznaf
(fernando)
16 أكتوبر 2019، 9:52م
9
نعم، لقد أخبرتك: الأمر غريب.
لكنه نجح مع عدد منا كما يمكنك قراءته هنا:
Wow, trying to reproduce it so I can be sure that things will go as planned on migration, and I have the error again? I’m going to continue to try and find the steps to reproduce a fix. Because I can’t reproduce it now.
لا أعرف ما إذا كانت وضعيتك هي نفسها، فالخطأ متشابه لكنه ليس مطابقًا تمامًا.
ذكر @usulrasolas أنه عدّل السكربت بجملات SQL لإصلاحه.
أما أنا (وآخرون) فلم نقم بأي تغيير، بل جربنا عدة محاولات.
الأمر غريب، أعرف، لكن قد تكون هناك مشاكل تتعلق بالتوقيت أو انتهاء المهلة.
لا نعلم ذلك.
المطورون يبحثون في الأمر.
Rasin
(Rasin)
17 أكتوبر 2019، 1:22ص
10
شكرًا لك على جميع اقتراحاتك! نتطلع إلى التحديثات الجديدة.