استكشاف المشكلات الشائعة وإصلاحها في واجهة برمجة تطبيقات Azure Cosmos DB لـ MongoDB
ينطبق على: MongoDB
توضح المقالة التالية الأخطاء الشائعة والحلول الخاصة بالنشر باستخدام Azure Cosmos DB ل MongoDB.
إشعار
لا يستضيف Azure Cosmos DB محرك MongoDB. يوفر تنفيذ الإصدار 4.0 و3.6 من البروتوكول السلكي لـ MongoDB ودعم الإصدار القديم للبروتوكول السلكي 3.2. لذلك، قد نواجه بعض هذه الأخطاء في API Azure Cosmos DB لـ MongoDB فقط.
الأخطاء الشائعة والحلول
رمز | خطأ | الوصف | حل |
---|---|---|---|
2 | BadValue | أحد الأسباب الشائعة هو استبعاد مسار الفهرس المقابل للعنصر المحدد ترتيبا تلو الآخر أو أن الترتيب حسب الاستعلام لا يحتوي على فهرس مركب مطابق يمكن تقديمه منه. يطلب الاستعلام فرزا على حقل غير مفهرس. | أنشئ فهرساً مطابقاً (أو فهرساً مركباً) لاستعلام الفرز الذي تتم محاولة استخدامه. |
2 | المعاملة غير نشطة | تجاوزت المعاملة متعددة المستندات الحد الزمني الثابت البالغ 5 ثوان. | أعد محاولة المعاملة متعددة المستندات أو حدد نطاق العمليات داخل المعاملة متعددة المستندات لإكمالها خلال الحد الزمني البالغ 5 ثوان. |
9 | FailedToParse | يشير إلى أن خادم Cosmos DB لم يتمكن من تفسير معلمة أو معالجتها لأن الإدخال المقدم لم يتوافق مع التنسيق المتوقع أو المدعوم. | تأكد من تضمين المعلمات الصالحة والمدعمة فقط في استعلاماتك. |
13 | غير مصرح به | لا يحتوي الطلب على أذونات لإكماله. | تأكد من استخدام المفاتيح الصحيحة. |
26 | NamespaceNotFound | لا يمكن العثور على قاعدة البيانات أو المجموعة المشار إليها في الاستعلام. | تأكد من تطابق اسم قاعدة البيانات/المجموعة تماماً مع الاسم في الاستعلام. |
50 | ExceededTimeLimit | تجاوز الطلب مهلة التنفيذ المقدرة بنحو 60 ثانية. | يمكن أن يحدث هذه الخطأ بسبب عدة أسباب. أحد الأسباب هو عندما لا تكون سعة وحدات الطلب المخصصة حاليا كافية لإكمال الطلب. يمكن حل هذا الخطأ عن طريق زيادة وحدات الطلب في هذه المجموعة أو قاعدة البيانات. في حالات أخرى، يمكن حل هذا الخطأ عن طريق تقسيم طلب كبير إلى طلبات أصغر. قد تؤدي إعادة محاولة عملية الكتابة التي حدثت بها هذا الخطأ إلى تكرار الكتابة. إذا كنت تحاول حذف كميات كبيرة من البيانات دون التأثير على وحدات الطلب: - فكِّر في استخدام TTL (حسب الطابع الزمني): انتهاء صلاحية البيانات مع واجهة برمجة تطبيقات API Azure Cosmos DB لـ MongoDB -- استخدم حجم المؤشر/الدفعة لتنفيذ الحذف. يمكنك جلب مستند واحد في كل مرة وحذفه من خلال تكرار حلقي. سيساعدك هذا في حذف البيانات ببطء دون التأثير في تطبيق الإنتاج. |
61 | ShardKeyNotFound | لم يحتوي المستند في طلبك على مفتاح جزء المجموعة (مفتاح قسم Azure Cosmos DB). | تأكد من استخدام مفتاح مقسم للمجموعة في الطلب. |
66 | ImmutableField | يحاول الطلب تغيير حقل غير قابل للتغيير | حقول "_id" غير قابلة للتغيير. تأكد من أن طلبك لا يحاول تحديث هذا الحقل أو حقل مفتاح القطع. |
67 | CannotCreateIndex | لا يمكن إكمال طلب إنشاء فهرس. | يمكن إنشاء ما يصل إلى 500 فهرس حقل فردي في حاوية. يمكن تضمين ما يصل إلى ثمانية حقول في فهرس مركب (الفهارس المركبة مدعومة في الإصدار 3.6+). |
112 | WriteConflict | فشلت العملية متعددة المستندات بسبب حدوث تعارض في عملية متعددة المستندات | أعد محاولة العملية متعددة المستندات إلى أن تكتمل. |
115 | CommandNotSupported | الطلب الذي تمت محاولة القيام به غير مدعوم. | يجب توفير تفاصيل أخرى في الخطأ. إذا كانت هذه الوظيفة مهمة بالنسبة إلى عمليات النشر الخاصة بك، فبادر بإنشاء تذكرة دعم في مدخل Microsoft Azure، وسيعود فريق Azure Cosmos DB إليك. |
11000 | DuplicateKey | المفتاح المقسم (مفتاح قسم Azure Cosmos DB) للمستند الذي أدخلته موجود بالفعل في المجموعة أو تم انتهاك قيد حقل الفهرس الفريد. | استخدم الدالة update() لتحديث مستند موجود. إذا تم انتهاك قيد حقل الفهرس الفريد، فقم بإدراج المستند أو تحديثه بقيمة حقل غير موجودة في الجزء/القسم حتى الآن. هناك خيار آخر وهو استخدام حقل يحتوي على مجموعة من حقول المعرف ومفتاح القطع. |
16500 | TooManyRequests | العدد الإجمالي لوحدات الطلب المستهلكة أكثر من معدل وحدة الطلب المخصص للمجموعة وتم تقييده. | يُرجى مراعاة حجم معدل النقل المعين في حاوية أو مجموعة حاويات من مدخل Azure أو يمكنك إعادة محاولة العملية. في حالة تمكين SSR (إعادة المحاولة من جانب الخادم)، يعيد Azure Cosmos DB محاولة الطلبات التي تفشل بسبب هذا الخطأ تلقائياً. |
16501 | ExceededMemoryLimit | كخدمة متعددة المستأجرين، تجاوزت العملية تخصيص ذاكرة العميل. ينطبق هذا فقط على Azure Cosmos DB للإصدار 3.2 من MongoDB. | قلِّل نطاق العملية من خلال معايير الاستعلام أكثر تقييداً أو اتصل بالدعم من مدخل Azure. مثال: db.getCollection('users').aggregate([{$match: {name: "Andy"}}, {$sort: {age: -1}}])) |
40324 | اسم مرحلة مسار غير معروف. | لم يتم التعرف على اسم المرحلة في طلب مسار التجميع. | تأكد من أن جميع أسماء مسار التجميع صالحة في طلبك. |
- | مشكلات الإصدارات السلكية لـ MongoDB | الإصدارات القديمة من برامج تشغيل MongoDB غير قادرة على الكشف عن اسم حساب Azure Cosmos DB في سلسلة الاتصال. | أدرج appName=@accountName@ في نهاية سلسلة الاتصال، حيث يكون accountName اسم حساب Azure Cosmos DB. |
- | مشكلات شبكة اتصال العميل MongoDB (على سبيل المثال استثناءات مأخذ التوصيل أو endOfStream) | فشل طلب الشبكة. غالباً ما يحدث هذا بسبب اتصال TCP غير النشط الذي يحاول عميل MongoDB استخدامه. غالبا ما تستخدم برامج تشغيل MongoDB تجمع الاتصال، مما يؤدي إلى حدوث اتصال عشوائي محدد من التجمع المستخدم للطلب. عادة ما تنتهي مهلة الاتصالات غير النشطة على نهاية Azure Cosmos DB بعد أربع دقائق. | يمكنك إمّا إعادة محاولة إجراء هذه الطلبات الفاشلة في التعليمات البرمجية لتطبيقك، وإمّا تغيير إعدادات (برنامج التشغيل) عميل MongoDB لإنهاء اتصالات TCP غير النشطة قبل ظهور نافذة انتهاء المهلة المقدرة بأربع دقائق، وإمّا تكوين إعدادات نظام التشغيل keepalive للحفاظ على اتصالات TCP في حالة نشطة.لتجنب رسائل الاتصال، قد تحتاج إلى تغيير سلسلة الاتصال لتعيين maxConnectionIdleTime على فترة من دقيقة إلى دقيقتين.- برنامج تشغيل Mongo: تكوين maxIdleTimeMS=120000 - Node.JS: تكوين socketTimeoutMS=120000 , autoReconnect = صحيح، keepAlive = صحيح، keepAliveInitialDelay = 3 دقائق |
- | Mongo Shell لا يعمل في مدخل Azure | عندما يحاول المستخدم فتح Mongo shell، لا يحدث شيء وتبقى علامة التبويب فارغة. | افحص جدار الحماية. جدار الحماية غير مدعوم مع Mongo shell في مدخل Microsoft Azure. - تثبيت Mongo shell على الكمبيوتر المحلي ضمن قواعد جدار الحماية - استخدام إصدار قديم من Mongo shell |
- | تعذّر الاتصال بسلسلة الاتصال | تم تغيير سلسلة الاتصال عند الترقية من 3.2 -> 3.6 | عند استخدام واجهة برمجة تطبيقات Azure Cosmos DB لحسابات MongoDB، يحتوي الإصدار 3.6 من الحسابات على نقطة النهاية بالتنسيق *.mongo.cosmos.azure.com بينما يحتوي الإصدار 3.2 من الحسابات على نقطة النهاية بالتنسيق *.documents.azure.com . |
الخطوات التالية
- تعرف على كيفية استخدام Studio 3T مع واجهة برمجة تطبيقات Azure Cosmos DB لـ MongoDB.
- تعرف على كيفية استخدام Robo 3Tمع واجهة برمجة تطبيقات قاعدة بيانات Azure Cosmos لـ MongoDB.
- استكشف نماذج MongoDB باستخدام واجهة برمجة تطبيقات Azure Cosmos DB لـ MongoDB.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ