الرئيسية
» مسؤول الشبكة
»
إصلاح خطأ قاعدة البيانات في واجهة المستخدم الرسومية لـ Nextcloud بعد التحديث: دليل عملي للاستعادة
إصلاح خطأ قاعدة البيانات في واجهة المستخدم الرسومية لـ Nextcloud بعد التحديث: دليل عملي للاستعادة
عادةً ما تعني رسالة خطأ في واجهة المستخدم الرسومية لـ Nextcloud، مثل "استثناء: خطأ في قاعدة البيانات" مباشرةً بعد التحديث، أن تطبيق الويب قادر على التحميل بشكل كافٍ للوصول إلى طبقة قاعدة البيانات، ولكن هناك استعلامًا أو عملية ترحيل أو مشكلة في مخطط قاعدة البيانات أو الاتصال أو عملية قاعدة بيانات خاصة بالتطبيق تفشل. لا تبدأ بحذف الجداول أو إعادة تثبيت Nextcloud أو استعادة دليل التعليمات البرمجية القديم فوق الدليل الجديد. التسلسل الأكثر أمانًا هو تحديد استعلام SQL أو عملية الترحيل الفاشلة، وإكمال مسار التحديث المدعوم، وإصلاح ما يمكن لـ Nextcloud إصلاحه فقط، والتحقق من خدمة قاعدة البيانات ومخططها قبل إعادة فتح الوصول.
يستند هذا المرجع إلى وثائق إدارة Nextcloud 35 الحالية المتوفرة في أكتوبر 2026. تفترض الأوامر أدناه تثبيتًا شائعًا على نمط Debian/Ubuntu /var/www/nextcloudمع مستخدم خادم الويب www-data. عدّل المسار، أو ملف PHP الثنائي، أو أمر الحاوية، أو مستخدم HTTP بما يتناسب مع بيئة النشر الخاصة بك.
التشخيص السريع: ما الذي يشير إليه الخطأ عادةً
ما تراه
الفرع المحتمل
التحقق الأول
ظهر الخطأ مباشرة بعد استبدال ملفات Nextcloud
لم تكتمل عمليات ترحيل قواعد البيانات/التطبيقات
occ statusوocc upgrade
تشير سجلات النظام إلى عدم وجود جدول أو عمود.
عدم اكتمال عملية الترحيل، أو عدم تطابق التطبيقات، أو انحراف المخطط
occ upgradeثم فحص المخطط
تشير سجلات النظام إلى رفض الاتصال، أو عدم وجود ملف بهذا الاسم، أو انقطاع اتصال الخادم.
مشكلة في خدمة قاعدة البيانات، أو المقبس، أو المضيف، أو بيانات الاعتماد، أو الإصدار
خدمة قواعد البيانات وconfig.php
يشير الخطأ إلى مساحة اسم تطبيق تابع لجهة خارجية أو جداولها
التطبيق غير متوافق أو فشلت عملية نقله
قم بتعطيل هذا التطبيق من سطر الأوامر وأعد محاولة الترقية
يعرض ملخص الإدارة تقارير عن الفهارس/الأعمدة/المفاتيح الأساسية المفقودة
يبقى العمل الاختياري على المخطط بعد الترقية
db:add-missing-*قم بتشغيل الأوامر الموثقة
يُعدّ استثناء قاعدة البيانات في واجهة المستخدم الرسومية على الويب أحد الأعراض. والدليل المفيد هو سجل الأحداث المطابق وحالة التحديث، وليس رسالة المتصفح العامة وحدها.
1. احتفظ بالحالة الحالية قبل إجراء أي تغييرات على قاعدة البيانات
إذا كنت لا تزال تحتفظ بنسخة احتياطية قبل التحديث، فاحتفظ بها كما هي. توصي Nextcloud صراحةً بإنشاء نسخة احتياطية قبل كل تحديث، وتغطي النسخة الاحتياطية المدمجة في أداة التحديث قاعدة التعليمات البرمجية فقط، ولا تشمل قاعدة البيانات أو دليل البيانات . إذا لم تكن لديك نسخة احتياطية حديثة لقاعدة البيانات، فأنشئ واحدة باستخدام أداة النسخ الاحتياطي المعتادة لمنصة قاعدة البيانات قبل محاولة إجراء تغييرات أو عمليات استعادة يدوية على استعلامات SQL.
تجنّب الرجوع إلى إصدار أقدم كحل سريع. تُشير Nextcloud إلى أن الرجوع إلى إصدار أقدم غير مدعوم وقد يُؤدي إلى تلف البيانات. في حال استدعت الحاجة إلى الرجوع إلى إصدار أقدم، فإن نموذج الاستعادة المدعوم هو تثبيت جديد للإصدار الأقدم متبوعًا باستعادة نسخة احتياطية مطابقة، وليس نسخ ملفات البرنامج القديمة فوق قاعدة بيانات بدأت عملية نقلها بالفعل. راجع وثائق أداة التحديث المدمجة في Nextcloud .
2. اقرأ استثناء قاعدة البيانات بالتفصيل في سجل Nextcloud
مع تفعيل تسجيل الملفات، يكون السجل الافتراضي موجودًا nextcloud.logداخل دليل البيانات المُهيأ. يُوصي دليل استكشاف الأخطاء وإصلاحها في Nextcloud بمراجعة هذا السجل، وعند الاقتضاء، سجلات خادم الويب وسجلات PHP. إذا عرضت صفحة الخطأ مُعرّف طلب، فابحث عن هذا المُعرّف لتحديد العملية المطابقة.
لا تختصر سجل الأخطاء بعبارة "خطأ في قاعدة البيانات". سجّل رمز SQLSTATE، ونوع الاستثناء، والجدول أو العمود المُسبب للمشكلة، ومكون التطبيق أو المكون الأساسي المذكور في تتبع المكدس. على سبيل المثال، يختلف خطأ "الجدول غير موجود" تمامًا عن خطأ "عدد كبير جدًا من الاتصالات" أو "انقطع اتصال خادم MySQL". تُدرج Nextcloud العديد من حالات الفشل الشائعة من نوع SQLSTATE في وثائق استكشاف الأخطاء وإصلاحها العامة .
استخدم سجل الإدخال الكامل لتحديد ما إذا كان الفشل ناتجًا عن كائن مخطط مفقود، أو اتصال فاشل، أو استعلام قاعدة بيانات خاص بالتطبيق.
3. تحقق مما إذا كان التحديث قد اكتمل بالفعل
يقوم المُحدِّث المُدمج باستبدال كود Nextcloud أولًا. وتُعدّ عمليات ترحيل قاعدة البيانات والتطبيق مرحلةً منفصلة. في وضع سطر الأوامر، يُمكن تشغيل المُحدِّث occ upgradeتلقائيًا؛ وإلا، يجب إكمال عملية الترحيل لاحقًا. يُفسّر هذا التمييز العديد من الحالات التي يبدو فيها المُحدِّث "مُكتملًا" بينما تُعيد واجهة المستخدم الرسومية العادية استثناءً في قاعدة البيانات.
cd /var/www/nextcloud
sudo -E -u www-data php occ status
إذا كنت بحاجة لحماية النظام أثناء استكشاف الأخطاء وإصلاحها، فقم بتفعيل وضع الصيانة. يصف Nextcloud وضع الصيانة بأنه الوضع المخصص للترقيات لأنه يمنع تسجيل الدخول الجديد ويقفل الجلسات النشطة.
تحقق من الإصدار المثبت وحالة الصيانة قبل تشغيل أوامر الإصلاح أو الترحيل، ثم امنع المستخدمين من الوصول أثناء عملية الاسترداد.
4. أكمل عمليات ترحيل قاعدة البيانات والتطبيقات المدعومة باستخدام الأمر occ upgrade
إذا تم تحديث الكود ولكن لم تكتمل عمليات الترحيل، فقم بتشغيل أمر الترقية كمستخدم HTTP:
cd /var/www/nextcloud
sudo -E -u www-data php occ upgrade
راقب المخرجات حتى يُشير الأمر إلى نجاحه أو يتوقف عند حدوث خطأ مُحدد. في حال فشله، أصلح هذا الشرط المُسبق قبل إعادة تنفيذ الأمر. تشمل الأسباب الشائعة للفشل: تطبيق غير متوافق، أو إصدار PHP/قاعدة بيانات غير مدعوم، أو خدمة قاعدة بيانات غير متاحة، أو صلاحيات تمنع إجراء التحديثات المطلوبة. لا تُحدّث واجهة المستخدم الرسومية بشكل مُتكرر أثناء فشل عملية الترحيل.
كما تحذر وثائق ترقية Nextcloud من تخطي الإصدارات الرئيسية. قم بالترقية إلى إصدار رئيسي واحد في كل مرة عند الانتقال بين الإصدارات الرئيسية.
تتمثل الخطوة الحاسمة لاستعادة البيانات في حالة التحديث غير المكتمل في السماح لـ Nextcloud بتشغيل عمليات الترحيل الخاصة به والتوقف عند أول خطأ ملموس يحتاج إلى تصحيح.
5. قم بتشغيل إجراء الإصلاح الخاص بـ Nextcloud بعد تصحيح مشكلة الترحيل.
maintenance:repairينفذ خطوات إصلاح Nextcloud، ويتم تشغيله تلقائيًا أثناء التحديثات. يُنصح بتشغيله يدويًا بعد تصحيح المشكلة التي أوقفت التحديث.
sudo -E -u www-data php occ maintenance:repair
يُعدّ هذا الإجراء أكثر أمانًا من ابتكار أوامر SQL، لأنّ خطوات الإصلاح مُقدّمة من قِبل نظام Nextcloud الأساسي وتطبيقاته. وهو ليس بديلاً سحريًا عن الأمر السابق occ upgrade، ولن يُصلح خادم قاعدة بيانات مُعطّلًا أو إصدار قاعدة بيانات غير مدعوم. الأمر موثّق في قسم أوامر نظام Nextcloud وصيانته .
قم بتشغيل الصيانة: الإصلاح بعد تصحيح فشل التحديث الأساسي؛ حيث يقوم بتنفيذ منطق الإصلاح الذي توفره Nextcloud والتطبيقات المثبتة.
6. تحقق من خدمة قاعدة البيانات وإعدادات الاتصال والإصدار المدعوم
إذا أشارت سجلات النظام إلى مشكلة في الاتصال بدلاً من مشكلة في بنية قاعدة البيانات، فتحقق من تشغيل خدمة قاعدة البيانات وإمكانية الوصول إليها من بيئة Nextcloud PHP. على خادم MariaDB نموذجي، يُعدّ التحقق التالي مفيدًا:
sudo systemctl status mariadb
ثم راجع إعدادات قاعدة البيانات في config/config.php: نوع قاعدة البيانات، والمضيف، واسم قاعدة البيانات، والمستخدم، وأي إعدادات للمقبس أو المنفذ. قد يظهر خطأ مقبس يونكس على شكل "لا يوجد ملف أو دليل بهذا الاسم"، بينما قد تفشل قاعدة البيانات البعيدة بسبب التوجيه، أو نظام أسماء النطاقات (DNS)، أو بروتوكول أمان طبقة النقل (TLS)، أو قواعد جدار الحماية، أو بيانات الاعتماد، أو الخادم نفسه.
يُعدّ توافق الإصدارات أمرًا بالغ الأهمية بعد أي تحديث رئيسي لـ Nextcloud. بالنسبة لـ Nextcloud 35، تشير ملاحظات الإصدار الرسمية إلى أن MariaDB 10.6 وMySQL 8.0 لم يعودا مدعومين؛ والحد الأدنى الموثق للإصدارات هو MariaDB 10.11 LTS وMySQL 8.4 LTS. تحقق من متطلبات إصدار Nextcloud الرئيسي لديك قبل ترقية قاعدة البيانات بشكل مستقل. راجع قسم "الترقية إلى Nextcloud 35" .
عندما يشير السجل إلى فشل الاتصال، تأكد من أن برنامج قاعدة البيانات قيد التشغيل قبل تغيير مخطط Nextcloud أو إعدادات التطبيق.
7. افحص انحراف المخطط وأضف فقط الهياكل المفقودة الموثقة.
يُضيف Nextcloud 35 ميزةً db:schema:checkجديدةً تُقارن المخطط الحالي مع المخطط المتوقع من قِبل النظام الأساسي المُثبّت وعمليات ترحيل التطبيقات. وهي ميزة للقراءة فقط: إذ تُبلغ عن الاختلافات دون تغيير قاعدة البيانات.
يدعم كل منها --dry-runمعاينة استعلام SQL. لا ينبغي استخدام هذه الأوامر كبديل لعملية ترحيل أساسية فاشلة. في حال db:schema:checkالإبلاغ عن كائنات غير متوقعة أو اختلافات في خصائص الأعمدة، يُرجى مراجعة النتائج قبل إجراء أي تغييرات؛ حيث تشير Nextcloud إلى أن بعض الإعدادات الافتراضية على مستوى قاعدة البيانات تقع خارج نموذج المخطط المتوقع. المرجع المعتمد للأوامر هو Nextcloud DAV وأوامر قاعدة البيانات .
استخدم فحص المخطط أولاً، ثم قم بتطبيق أوامر المخطط المفقود المدعومة من Nextcloud فقط عندما تشير المخرجات أو نظرة عامة على المسؤول إلى أنها مطلوبة.
8. عزل حالات فشل تطبيقات الطرف الثالث قبل إعادة فتح واجهة المستخدم الرسومية على الويب
إذا أشار تتبع الأخطاء إلى تطبيق غير مُضمّن في النظام، فقد لا يكون تحديثه متوافقًا مع إصدار الخادم الجديد. يُوصي دليل استكشاف الأخطاء وإصلاحها في Nextcloud بتعطيل تطبيقات الطرف الثالث/غير المُضمّنة في النظام أثناء التحديثات واستكشاف الأخطاء وإصلاحها. استخدم أوامر التطبيق المتوفرة في إصدارك المُثبّت لتعطيل التطبيق المشتبه به من سطر الأوامر، ثم أعد تشغيل الأمر occ upgrade، ولا تُفعّل التطبيق إلا بعد التأكد من توافق الإصدار.
يُعدّ هذا الفرع بالغ الأهمية، خاصةً عندما تبدو الجداول الأساسية سليمة، ولكن الاستثناء يُشير إلى مساحة اسم موفر أو جدول تابع لتطبيق واحد. إزالة جداول ذلك التطبيق يدويًا أمرٌ محفوف بالمخاطر، لأنك قد تُتلف بيانات لا يزال التطبيق يعتمد عليها.
9. الخروج من وضع الصيانة والتحقق من أكثر من صفحة تسجيل الدخول
بعد occ upgradeاكتمال العملية، لن تظهر عمليات إصلاح/فحص المخطط أي مشكلة تعيق العملية، وستكون خدمة قاعدة البيانات مستقرة، لذا قم بتعطيل وضع الصيانة:
ثم تحقق من النظام على مراحل: حمّل صفحة تسجيل الدخول، سجّل الدخول، افتح تطبيق الملفات، تصفّح بعض المجلدات، اختبر تحميل/تنزيل ملف واحد، تحقّق من إعدادات الإدارة بحثًا عن أي تحذيرات، وراجع أحدث nextcloud.logالإدخالات. تأكّد أيضًا من أن مهام cron/الخلفية تعمل بشكل طبيعي. لا يُعدّ استعادة الصفحة الرئيسية وحدها دليلًا على سلامة عمليات نقل التطبيقات، وعمليات الملفات، ومهام الخلفية.
بعد اجتياز عمليات التحقق من قاعدة البيانات والترحيل، أعد فتح واجهة المستخدم الرسومية على الويب وتحقق من تصفح الملفات والعمليات الأساسية بشكل طبيعي قبل الإعلان عن استعادة التحديث.
قائمة التحقق من التعافي
احتفظ بنسخة احتياطية قبل التحديث وتجنب الرجوع إلى إصدار أقدم غير مدعوم.
اقرأ استثناء قاعدة البيانات بالكامل في nextcloud.log، بما في ذلك SQLSTATE والمكون المسمى في التتبع.
تحقق من occ statusالجهاز وقم بوضعه في وضع الصيانة أثناء الإصلاح.
قم بتشغيل البرنامج occ upgradeلإكمال عمليات ترحيل البرامج الأساسية والتطبيقات المدعومة.
قم بتصحيح أول عائق ملموس بدلاً من تعديل جداول قاعدة البيانات بشكل أعمى.
قم بتعطيل تطبيق الطرف الثالث المعطل إذا كان التتبع يشير إليه بوضوح، ثم أعد محاولة الترقية.
قم بإيقاف وضع الصيانة فقط بعد اجتياز فحوصات واجهة سطر الأوامر، ثم اختبر الملفات وعمليات النقل والتحذيرات الإدارية والسجلات والمهام التي تعمل في الخلفية.
متى يكون الترميم أفضل من الإصلاح؟
استعد من نسخة احتياطية سليمة ومتسقة داخليًا في حال تلف قاعدة البيانات نفسها، أو في حال تغيير البيانات جزئيًا أثناء عمليات النقل بطريقة لا يمكن التراجع عنها بأمان، أو في حال حذف جداول/بيانات مطلوبة خارج Nextcloud. يجب أن تنتمي قاعدة البيانات، والتكوين، ودليل البيانات، وإصدار الكود إلى نقطة استعادة متوافقة. إذا كنت مشتركًا في دعم Nextcloud المدفوع أو لديك عملية نشر بالغة الأهمية لأعمالك، فتوقف قبل إجراء أي تعديلات جذرية على SQL، وقم بالتصعيد مع تقديم سجل الأحداث الكامل، وإصدارات Nextcloud المصدر والهدف بدقة، ونوع/إصدار قاعدة البيانات، وإصدار PHP، ومخرجات occالأمر ذي الصلة.
المبدأ الأساسي بسيط: ظهور "خطأ في قاعدة البيانات" بعد التحديث ليس مبرراً للتخمين بشأن استعلامات SQL. دع السجل يُحدد سبب الفشل، ودع occ upgradeعمليات الترحيل المُخطط لها تُكتمل، واستخدم أدوات الإصلاح والمخطط الخاصة بـ Nextcloud، وتحقق من صحة منصة قاعدة البيانات قبل إعادة فتح المثيل.