[الموقع معطل :(] فشل الترقية\إعادة البناء - مشكلة في ترحيل قاعدة البيانات؟

أقوم بترقية الإصدار الحالي من Discourse اليوم، والفشل في إعادة البناء، ولست متأكدًا تمامًا مما يسبب ذلك. كان التثبيت متأخرًا ببضع تكرارات (أعتقد 2.8x). تم تحديث صورة Docker بشكل جيد عندما ذهبت لتحديث Discourse، طُلب مني إجراء سحب وإعادة بناء يدوي (في معظم الأحيان يُطلب مني ذلك) ومع ذلك، فشلت إعادة البناء.

إليك نتائج البحث عن “error” باستخدام discourse-doctor. أعتذر عن لقطات الشاشة، يبدو أن عميل VNC المستند إلى الويب الذي لدي لا يدعم النسخ واللصق.

image

يبدو أنه يعتقد أن لديك مستخدمين باسم racerx. أعتقد أن هناك موضوعًا حول مشكلة مماثلة هنا:

وهناك أيضًا موضوع أحدث هنا:

4 إعجابات

شكراً لك، سأبدأ في هذا المسار… تمنياتي لي بالتوفيق..

إعجاب واحد (1)

أنا عالق في كيفية بدء إعادة الفهرسة. لقد تمكنت من البدء (على الرغم من أنه لا يمكن الوصول إليه عبر الويب) والدخول إلى التطبيق ولكن لم أحرز أي تقدم من ذلك.\n\nimage

إعجابَين (2)

تحتاج إلى تشغيل تلك الأوامر داخل الحاوية. شيء مثل

./launcher start app
./launcher enter app

قبل sudo postgres

تعديل: أوه، لقد دخلت الحاوية.

يحتاج postgres -c إلى sudo قبله.

4 إعجابات

أعتقد أن sudo لن يعمل، لكن su فعل ذلك والآن أنا أستكشف في postgres.

لذا أحتاج الآن إلى معرفة كيفية إصلاح التكرارات بالفعل. يبدو أن الاستعلام هو..

UPDATE users SET username_lower = 'xxx' WHERE id = xxx;

لقد جربت بعض الاختلافات دون جدوى. كما ترى، لست متأكدًا بنسبة 100٪ من بناء الجملة الصحيح هنا لأن الخطأ يتعلق بالعمود.

سأستمر في البحث. لا أعرف عدد التكرارات لدي بعد أيضًا…

/edit… إنه فقط racerx. اللعنة عليك يا RACERX!

image

إعجابَين (2)

هل اكتشفت كيفية إصلاحه؟

أود أيضًا إرجاع معرفات المستخدمين (وهي فريدة) لتحديدهم بشكل صحيح ثم إعادة تسمية أحد هذين المستخدمين :slight_smile:

4 إعجابات

بالإضافة إلى ما قاله @Canapin، في حال لم تكن قد اكتشفت ذلك بالفعل، يجب أن يكون من السهل جعل أسماء المستخدمين فريدة نظرًا لأنك قد حددت بالفعل أن racerx هو اسم المستخدم المكرر الوحيد.

أولاً، إذا لم تكن قد فعلت ذلك بالفعل، فتأكد من أن racerx2 غير موجود بالفعل حتى لا تنقل المشكلة إلى اسم مستخدم مختلف: (إذا حصلت على معرف، جرب اسم مستخدم مختلف.)

SELECT id FROM users WHERE username_lower = 'racerx2';

بمجرد حصولك على اسم مستخدم غير مستخدم، احصل على معرفات حسابات racerx المكررة:

SELECT id from users WHERE username_lower = 'racerx';

اختر واحداً، لا يهم أي واحد على الرغم من أنني سأستخدم الأعلى، ثم قم بتغيير اسم المستخدم الخاص به: (استبدل racerx2 باسم مستخدم مختلف إذا لزم الأمر و 12345 بمعرف racerx الذي اخترته.)

UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
3 إعجابات

تحديث (كان في المسودات لبضعة أيام، آسف) يبدو أنني توصلت إلى الحل. لست متأكدًا مما إذا كان ما فعلته هو النهج الصحيح، ولكنه أعيد بناؤه بنجاح.

وجدت صعوبة في تعديل/إلحاق قيمة racerx في عمود username_lower باستخدام الصيغة، لذا اتبعت طريقة أخرى. من خلال البحث عن معرفات الصفوف وتعديل قيمة username_lower في صف معين.

أولاً، حاولت الحصول على تقرير بأي صفوف في جدول المستخدمين تحتوي على “racerx” في عمود username_lower.

select all from users where username_lower ='racerx';

من هذا، قررت تعديل racerx إلى racerx2، لا أتذكر بالضبط ما كتبته لتحقيق ذلك. أعتقد أنه كان UPDATE SET from users username_lower racerx to racerx2

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.