عند فتح نظرة عامة على إدارة Nextcloud، قد يظهر لك التحذير التالي: "قاعدة البيانات تفتقر إلى بعض الفهارس". قد يظهر هذا التحذير بعد الترقية لأن Nextcloud يُضيف فهارس جديدة إلى الجداول الموجودة بمرور الوقت، ولا يقوم بإنشائها تلقائيًا دائمًا في قواعد البيانات الكبيرة. قد يؤدي فقدان الفهارس إلى إبطاء بعض استعلامات قاعدة البيانات. يُمكنك استخدام الأمر المدمج لإصلاح هذه المشكلة occ db:add-missing-indices.
قبل تغيير المخطط، تأكد من تشغيل الأمر الخاص بتثبيت Nextcloud الصحيح، وقم بعمل نسخة احتياطية من قاعدة البيانات، واستخدم حساب مستخدم نظام التشغيل الخاص بخادم الويب. في الإصدارات التي يدعمها الأمر، استعرض استعلام SQL المقترح --dry-run. ثم قم بتشغيل عملية الإصلاح وتحقق من نظرة عامة على الإدارة مرة أخرى.
ماذا يعني التحذير؟
فهرس قاعدة البيانات هو بنية تساعد قاعدة البيانات في العثور على الصفوف دون الحاجة إلى فحص الجدول بأكمله. تُعرّف Nextcloud وتطبيقاتها فهارس للجداول والحقول التي تستخدمها. عندما يُضيف إصدار أحدث من Nextcloud أو التطبيق فهرسًا غير موجود في التثبيت الحالي، قد تُبلغ صفحة الإدارة عن هذا التباين. هذا تحذير لصيانة المخطط، ولا يعني بالضرورة أن قاعدة البيانات تالفة أو أن ملفات المستخدم مفقودة.
يشير دليل إدارة Nextcloud إلى إمكانية إضافة الفهارس تدريجيًا، بما في ذلك لتحسين الأداء، ويوجه المسؤولين إلى تشغيل الأمر المناسب occ db:add-missing-indices. قد تستغرق إضافة الفهرس وقتًا، خاصةً مع الجداول الكبيرة، وقد يختلف حمل قاعدة البيانات أو سلوك التأمين باختلاف محرك قاعدة البيانات وحجم العمل. لذا، يُنصح بتخطيط التغيير خلال فترة انخفاض الاستخدام إذا كان خادمك مشغولًا.
قبل إجراء عملية الإصلاح
- تأكد من مسار التثبيت والإصدار. قم بتشغيل الأوامر من الدليل الذي يحتوي على
occبرنامج التثبيت المطلوب، أو قم بتوفير مساره الكامل. - قم بعمل نسخة احتياطية من قاعدة البيانات. استخدم إجراء النسخ الاحتياطي المعتاد لقواعد بيانات MariaDB/MySQL أو PostgreSQL أو SQLite. تأكد من اكتمال عملية النسخ الاحتياطي وأنك تعرف كيفية استعادتها.
- ابحث عن مستخدم HTTP. استخدم الحساب الذي يُشغّل خادم الويب الخاص بـ Nextcloud. توجد أمثلة شائعة
www-dataعلى أنظمة Debian أو Ubuntu، apacheوFedora أو CentOS، httpوArch، و wwwrunopenSUSE. قد يختلف التوزيع لديك. - تحقق من خيارات الأوامر. راجع دليل إدارة Nextcloud 35 المستقر
--dry-run. إذا لم يتعرف الإصدار المثبت لديك على الخيار، فراجع occ db:add-missing-indices --helpمخرجات ذلك الإصدار وتجاوز المعاينة بدلاً من افتراض وجوده.
يُفصّل دليل النسخ الاحتياطي الرسمي قاعدة البيانات، والإعدادات، ودليل البيانات، ومكونات التثبيت الأخرى التي يجب الاحتفاظ بها لإجراء نسخ احتياطي كامل. ولإجراء هذه العملية، يُنصح على الأقل بعمل نسخة احتياطية مُختبرة لقاعدة البيانات باستخدام الإجراء المناسب لها.
الخطوة 1: افتح نافذة طرفية في تثبيت Nextcloud
لتثبيت نظام لينكس تقليدي، اتصل بالخادم عبر SSH وانتقل إلى مجلد Nextcloud. المسار الشائع في أوبونتو هو `///` /var/www/nextcloud، ولكن استخدم المسار الموجود على خادمك.
cd /var/www/nextcloud
sudo -E -u www-data php occ status
تأكد من أن مخرجات الحالة تُحدد النسخة المُثبّتة المتوقعة. إذا كنت تستخدم إصدار PHP مختلفًا لخادم الويب عن الإصدار الافتراضي في سطر الأوامر php، فاستخدم نفس إصدار PHP المتوافق occ. يُساعد التشغيل occكمستخدم HTTP في الحفاظ على ملكية الملفات والأذونات المتوقعة.
الخطوة الثانية: معاينة تغييرات الفهرس
إذا كان الإصدار المثبت لديك يدعم ذلك، فقم بتشغيل التجربة الأولية أولاً:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
تُتيح لك هذه التجربة معاينة عبارات SQL دون تطبيقها. اقرأ المخرجات وتأكد من أنها تتعلق بالفهارس المفقودة التي تنوي إصلاحها. إذا أشارت المخرجات إلى جدول أو فهرس غير مألوف لديك، فسجّل اسمه بدقة وتحقق من تثبيت التطبيق ذي الصلة وتحديثه. لا تقم بلصق معاينة SQL في وحدة تحكم قاعدة البيانات كاختصار.
الخطوة 3: إضافة الفهارس المفقودة
عندما تكون المعاينة متوقعة والنسخة الاحتياطية جاهزة، قم بتشغيل أمر الإصلاح الموثق:
sudo -E -u www-data php occ db:add-missing-indices
يتحقق هذا الأمر من جداول قاعدة البيانات وينشئ الفهارس المُعرّفة في المخطط ولكنها غير موجودة في التثبيت الحالي. دعه يُكمل العملية. قد تستغرق هذه العملية بعض الوقت في قواعد البيانات الكبيرة. تجنب مقاطعته أثناء تغيير المخطط. تشير وثائق Nextcloud إلى إمكانية تشغيل هذا الأمر أثناء بقاء النظام متصلاً بالإنترنت؛ ولا يُشترط وضع الصيانة لإجراء هذا الإصلاح تحديدًا. اتبع إجراءات إدارة التغيير الخاصة بك إذا تطلّب الأمر فترة صيانة.
Docker وأنواع التثبيت الأخرى
في بيئة حاويات، شغّل التطبيق occداخل حاوية تطبيق Nextcloud، وليس داخل حاوية قاعدة البيانات. تختلف أسماء الحاويات والخدمات، لذا راجع بيئة النشر الخاصة بك واستبدل الاسم الصحيح. بالنسبة لحاوية Docker باسم nextcloud، يكون النمط كالتالي:
docker exec --user www-data nextcloud php occ db:add-missing-indices
بالنسبة لـ Docker Compose، يكون النمط المقابل هو docker compose exec -u www-data <nextcloud-service> php occ db:add-missing-indices. تستخدم بعض عمليات النشر المعبأة أمرًا مخصصًا أو مستخدم حاوية مختلفًا؛ اتبع التعليمات الخاصة بتلك الحزمة تحديدًا. لا تنسخ اسم حاوية من إعداد شخص آخر دون التحقق منه.
إذا فشل الأمر أو استمر التحذير
- تم رفض الإذن: تحقق من مستخدم HTTP ومسار التثبيت. لا تحل هذه المشكلة بتشغيل الأمر بصلاحيات المستخدم الجذر إلا إذا كانت وثائق النشر الخاصة بك تتطلب تحديدًا استخدام برنامج وسيط ذي صلاحيات؛ يجب تشغيل عملية PHP عادةً باستخدام حساب مستخدم خادم الويب.
- خطأ في الاتصال بقاعدة البيانات أو خطأ في PHP: تحقق من سجل Nextcloud، وحالة خدمة قاعدة البيانات، وإصدار PHP المُكوّن، ومخرجات الأمر. حلّ مشكلة الاتصال أو مشكلة وقت التشغيل الأساسية قبل إعادة تشغيل أمر المخطط.
- خطأ في المفتاح المكرر أو الفهرس الفريد: توقف واحتفظ بنص الخطأ كاملاً. قد يشير هذا الخطأ إلى وجود صفوف متضاربة تمنع إنشاء فهرس فريد. حدد التطبيق والجدول المتأثرين، وتأكد من إصداري التطبيق وNextcloud، واستشر مسؤول التطبيق أو مسؤول نظام مُلمّ بقاعدة البيانات. لا تحذف الصفوف أو تُسقط الفهارس دون تشخيص دقيق للبيانات ونسخة احتياطية.
- "الأمر غير موجود" أو خيار غير مدعوم: تأكد من أنك تستخدم تثبيت Nextcloud الصحيح، وتحقق
php occ listمن php occ help db:add-missing-indicesصلاحيات المستخدم HTTP. قد لا تعرض الإصدارات القديمة جميع الخيارات الأحدث. - لا يزال التحذير يظهر: قم بتحديث نظرة عامة على الإدارة بعد انتهاء الأمر بنجاح. اقرأ أسماء الفهارس والجداول المذكورة في التحذير بدقة. قد يكون هناك أكثر من فهرس مفقود، أو فهرس جديد ناتج عن تحديث تطبيق، أو عملية فاشلة في قاعدة البيانات، أو عدم تطابق في المخطط لم يحلّه هذا الأمر.
لا تخلط بين الفهارس المفقودة والأعمدة أو المفاتيح الأساسية المفقودة. توفر Nextcloud أوامر منفصلة لتلك التغييرات في المخطط، مثل `resource` db:add-missing-columnsو`resource` db:add-missing-primary-keys. قم بتشغيل عملية إصلاح مختلفة فقط عندما يتطلب ذلك تحذير المسؤول أو وثائق الإصدار المحدد.
تحقق من النتيجة
- انتظر حتى
db:add-missing-indicesيخرج البرنامج ويعلن عن اكتمال العملية، مثل:Done. - أعد تحميل نظرة عامة على الإدارة وتأكد من اختفاء تحذير الفهرس المفقود المحدد.
- إذا استمر الأمر، قارن أسماء الجداول والفهارس الخاصة به مع مخرجات الأمر بدلاً من إعادة تشغيله بشكل أعمى.
- تحقق من سجل Nextcloud وحالة قاعدة البيانات بحثًا عن أخطاء جديدة، ثم تأكد من أن الوصول العادي إلى الملفات والتطبيقات التي تستخدم الجداول المتأثرة لا تزال تعمل.
- احتفظ بالنسخة الاحتياطية حتى يعمل النظام بشكل طبيعي وتسمح سياسة الاحتفاظ بالبيانات بإزالتها.
للاطلاع على صيغة الأوامر الحالية، راجع مرجع أوامر قاعدة بيانات Nextcloud والفهرس . وللاطلاع على متطلبات المستخدم وPHP، راجع استخدام أمر occ ودليل النسخ الاحتياطي لـ Nextcloud . تُشير هذه الصفحات الثابتة إلى أن الدليل الحالي هو Nextcloud Server 35 عند التحقق منه في 6 أكتوبر 2026؛ قد تختلف المسارات والخيارات وتعليمات التغليف في الإصدارات الأخرى أو أنواع النشر.