في الليلة الماضية، واجهت مشكلة كبيرة في منتدى واضطررت إلى إعادة إنشاء كل شيء. لكن أثناء الاستعادة، واجهت مشكلة وفشلت العملية. إليك الخطأ:
ERROR: could not create unique index "index_users_on_username_lower"
DETAIL: Key (username_lower)=(lea) is duplicated.
EXCEPTION: psql failed: DETAIL: Key (username_lower)=(lea) is duplicated.
أعتقد أن هذا قد يكون مرتبطًا بتسجيل الدخول عبر تويتر، لكن هل يمكن لعملية الاستعادة تغيير اسم username_lower إذا كان مكررًا؟ لا أظن أنني سأتمكن من تعديله في ملف SQL (لأنه كبير جدًا) ثم إعادة رفعه.
كانت هناك مشكلة مختلفة، حيث لم يتمكن الخادم من الوصول إلى pups.git، ولم يتمكن من حل اسم المضيف: github.com. لقد جربت بعض الحلول التي عثرت عليها الليلة الماضية، لكنها لم تنجح.
مع الاستعادة، أعتقد أن المشكلة تتعلق باسم مستخدم واحد فقط (ربما مرتبط بإنشاء حساب تويتر بنقرة واحدة، أو شيء من هذا القبيل). أحاول إصلاحها يدويًا، لكن إدارة ملف SQL بحجم 1 جيجابايت ليست مثالية.
تعديل: باستخدام برنامج vim، تمكنت من تعديل ملف SQL، وعثرت على الأسطر الصحيحة. استُعيدت العملية بنجاح. أحتاج فقط إلى إعادة بناء كل شيء وسيكون جاهزًا للتشغيل.
كان هناك اسم مستخدم “Lea” واسم مستخدم “lea”. من الغريب أن يسمح Discourse بذلك. إنه منتدى قديم نسبيًا (يونيو 2014)، وقمت بتحديثه بشكل متكرر، لذا ربما كان ذلك بسبب إصدار معين.
أنا ضعيف جدًا في SQL. للعثور على الجدول الصحيح، بحثت عن username_lower,. ما وجهني إلى جدول المستخدمين، ثم بحثت عن “lea”. قمت بتحرير مدخلات Lea الاثنين. ربما كان الأمر أسهل بكثير، لكن تذكر أنني ضعيف في SQL، خاصة عندما يكون حجم الملف 1.5 جيجابايت. احفظ الملف.
قمت بضغط ملف dump.sql باستخدام 7zip. يجب أن يكون لديك ملف جديد باسم: dump.sql.gz.
أنشئ مجلدًا جديدًا في:file_folder: /var/discourse/shared/standalone/backups/default/. استخدمت اسم test.
إذا كان لديك اتصال إنترنت جيد، قم برفع مجلد uploads الذي حصلت عليه عند فك ضغط ملف النسخة الاحتياطية، وضع المجلد في /var/discourse/shared/standalone/backups/default/test/.
6.1 إذا لم يكن لديك اتصال جيد مثلي، فيجب عليك استخدام خادمك. لاحظ اسم ملف النسخة الاحتياطية الخاص بك واستخدم الأمر التالي: tar xvzf /var/discourse/shared/standalone/backups/default/yourbackupfile.tar.gz -C /var/discourse/shared/standalone/backups/default/test.
6.2 في مجلد test، ستجد ملف dump.sql.gz ومجلد uploads. هذا جيد.
قم برفع ملف dump.sql.gz من مجلد test الخاص بك لاستبدال ملف dump.sql.gz التالف.
في خادمك: انتقل إلى cd /var/discourse/shared/standalone/backups/default/test.
تحتاج إلى إعادة إنشاء ملف النسخة الاحتياطية الخاص بك. يجب أن تستخدم الاسم الدقيق لملف النسخة الاحتياطية الأقدم: tar -czvf yourbackupfile.tar.gz uploads/ dump.sql.gz.
في برنامج FTP الخاص بك، انتقل إلى /var/discourse/shared/standalone/backups/default/، ثم احذف النسخة الاحتياطية التالفة أو انقلها إلى مجلد آخر.
انقل ملف النسخة الاحتياطية الجديد إلى /var/discourse/shared/standalone/backups/default/.
استعد النسخة الاحتياطية. أنا أفضل استخدام هذه الطريقة، وإذا وصلت إلى هنا، فيجب أن تكون قادرًا على استخدامها بسهولة: Restore a backup from the command line