ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
yellow
Failed to handle exception in exception app middleware : PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1:
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
We are using Discourse behind a reverse proxy, so all users have the same IP, and we would need the GeoIP lookup - I do not see the option to disable the IP lookup altogether, instead of going through the registration process and obtaining a license for something that we are not needed, only in order to eliminate the errors from the logs…
التكرار عبر سجلات الأخطاء لمراقبة تشغيل النظام هو ممارسة جيدة، ومن المزعج قضاء الوقت في التحقيق في الأخطاء، فقط لمعرفة أنها متوقعة لأن عملية ما يتم محاولة تنفيذها ومن المتوقع أن تفشل افتراضيًا ويمكن تخطيها بسهولة عن طريق التحقق من إعداد واحد .
يمكنني محاولة فتح طلب سحب على GitHub، إذا كنت توافق بشكل أساسي. ولكن ربما أغفل شيئًا وأنه ليس بهذه السهولة أو له عيوب لا أراها.
لم يتم العثور على MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb): لا يوجد مثل هذا الملف أو الدليل @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
لم يتم العثور على MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb): لا يوجد مثل هذا الملف أو الدليل @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
تم التراجع عنه مرة أخرى نظرًا لأنه كان معقدًا للغاية لتعديل الاختبارات الآلية له. تم بذل محاولة، لكنها أعادت إضافة التحذيرات، مما أفسد الغرض من PR الخاص بي في المقام الأول:
وبالتالي تم التراجع عن كليهما:
كانت المشكلة على الأرجح هي جعل قراءة قاعدة البيانات تعتمد على وجود مفتاح MaxMind. ومع ذلك، يمكن إضافة قاعدة البيانات بطرق أخرى. في نسختنا الخاصة، في هذه الأثناء، نضيف قواعد بيانات DB-IP المجانية، والتي لا تتطلب حسابًا. لذلك، فإن PR الخاص بي كان سيفسد الطريقة التي نفعل بها ذلك الآن. نفس الشيء تسبب في فشل الاختبارات التي أصلحتها في PR الخاص بي. ولكن على الفرع الرئيسي و/أو في بعض الإضافات، تسبب هذا على الأرجح في مشاكل أخرى.
حل أفضل، إذا أراد شخص ما الاقتراب من هذا مرة أخرى، سيكون التحقق مما إذا كانت ملفات قاعدة البيانات موجودة، قبل محاولة تحميلها، بدلاً من التحقق مما إذا كان مفتاح الترخيص محددًا. لذا هنا:
فقط إذا كان File.join(path, "GeoLite2-City.mmdb") موجودًا، قم بتحميله باستخدام mmdb_load.
قد يكون خرج واجهة المستخدم المعدل مشكلة أيضًا لبعض الاختبارات، ولكن يجب أن يكون من الممكن إضافته دون كسر الاختبارات، كحل بديل فقط إذا لم يكن هناك موقع متاح ثم كان العلم المقابل صحيحًا، والذي تم تعيينه باستخدام ret[:no_license] = true. ولكن يجب إعادة تسميته إلى no_db أو شيء من هذا القبيل للإشارة إلى أنه لا يتعلق بما إذا كان مفتاح ترخيص MaxMind قد تم تحديده، ولكن ما إذا كانت ملفات قاعدة البيانات الفعلية موجودة أم لا.