غير قادر على استعادة/تحديث الخطاب (PG::InvalidTextRepresentation: خطأ: بناء إدخال غير صالح لنوع العدد الصحيح: "[]")

مرحباً!

لدي مثيل يعمل حاليًا على الإصدار 2.9.0.beta4، واحتجت إلى ترحيله، لذلك قمت بعمل نسخة احتياطية/استعادة أساسية، لكن الاستعادة فشلت على المثيل الجديد. قررت بعد ذلك محاولة تحديث المثيل الأصلي، لكنه فشل أيضًا. فشل كلاهما، على ما يبدو لنفس السبب، أثناء الأمر db:migrate.

خطأ التحديث: https://pastebin.com/raw/sQrnMe27
خطأ الاستعادة: https://pastebin.com/raw/idWYmEFq

شكراً للمساعدة!

يبدو أنه قد يكون :bug:
هذا يبدو لي أنه في النواة، ولكن السؤال القياسي هو هل لديك أي إضافات غير قياسية؟

لا، إنها نسخة أصلية :slight_smile:

لقد واجهت خطأً مشابهاً في موقع الاختبار الخاص بي حيث كان لدي بعض البيانات الشاذة في إعداد موقع selectable_avatar، واضطررت إلى تحديثه عبر وحدة تحكم Rails.

هل أنت مرتاح لاستخدام وحدة تحكم Rails؟ إذا كان الأمر كذلك، هل يمكنك تشغيل هذا ومعرفة ما يقوله:

SiteSetting.where(data_type:17)

لست متأكدًا مما إذا كنت قد فعلت ذلك بشكل صحيح، ولكن إليك ما حصلت عليه:

=> #<ActiveRecord::Relation [#<SiteSetting id: 56, name: "selectable_avatars", data_type: 17, value: "[]", created_at: "2022-06-07 04:30:35.458837000 +0000", updated_at: "2022-06-08 08:14:54.196037000 +0000">]>

أعتقد أنه يجب أن تكون قادرًا على تشغيل SiteSetting.selectable_avatars = \"\" (من وحدة تحكم rails مرة أخرى)، ثم تكون جاهزًا لإعادة البناء.

حاليًا، أعيد البناء وقد اجتزت أمر ترحيل قاعدة البيانات المجهد، لذا أعتقد أن هذا تم إصلاحه.
شكرًا لكما على مساعدتكما السريعة!

يبدو أنك فعلتها! يجب أن ترى ما إذا كان بإمكانك لفت الانتباه إلى هذا، حيث أنني متأكد من أن الترحيل من المفترض أن يرحل تلك الصور الرمزية القابلة للتحديد إلى التنسيق الجديد.

إنها كذلك، وقد نجحت في كل الحالات الأخرى التي رأيناها. [] ليست قيمة صالحة، حتى في التنسيق القديم، لذا فإن هذه الحالة بالذات مفاجئة للغاية. ربما تم تركها من بعض العمل اليدوي على وحدة التحكم، أو استيراد سيئ :thinking:

إذا تلقينا المزيد من التقارير، فسنحرص على إضافة إصلاح تلقائي لهذه الحالة.

آه. صحيح. عادةً عندما أحصل على هذا الخطأ، يكون ذلك بسبب أنني أخطأت في الوصول إلى المتغير الخاطئ أو شيء من هذا القبيل. ولكن ربما كانت هذه هي الحالة التي تُركت فيها بعد حذف جميع الحالات الأخرى. ولكن، حقًا، لم أكن منتبهًا بما فيه الكفاية. :wink:

إعدادات ‘القائمة’ لدينا هي واجهة مستخدم بسيطة فوق سلاسل نصية مفصولة بعلامة الأنبوب، لذا من الناحية النظرية، يجب تخزين قائمة فارغة كسلسلة نصية فارغة. لكنك تطرح نقطة جيدة - ربما حاول شخص ما إفراغ القائمة وفعل شيئًا كهذا عن طريق الخطأ:

pry(main)> SiteSetting.selectable_avatars = []
=> []
pry(main)> SiteSetting.selectable_avatars
=> "[]"

(هذا بالتنسيق القديم. التنسيق الجديد لديه عمليات تحقق لمنع ذلك، حتى من وحدة التحكم)

حسنًا، في حالتنا، تم إعداد المنتدى في بداية هذا الشهر، ولم يتم أي تفاعل مع وحدة التحكم على الإطلاق (ولا استيراد). في الواقع، اكتشفت وحدة تحكم rails اليوم :smile: