خطأ في قاعدة بيانات Nextcloud بعد التحديث: ما الذي يجب التحقق منه أولاً

إذا بدأ Nextcloud بعرض استثناء "خطأ في قاعدة البيانات" بعد التحديث، فتحقق من الخطأ الأساسي في قاعدة البيانات nextcloud.logقبل تغيير أي جداول. استعد اتصال قاعدة البيانات أولاً؛ إذا توقف التحديث في منتصفه، فأكمله occ upgrade، ثم استخدم أوامر الإصلاح الموثقة فقط عندما تبرر السجلات ذلك.

تحديد العطل الفعلي

رسالة المتصفح هي عرض وليست تشخيصًا. قد يتعذر على Nextcloud الوصول إلى MySQL/MariaDB أو PostgreSQL، أو قد لا يتم التحقق من حساب قاعدة البيانات، أو قد يكون رمز التطبيق ومخططه في مراحل ترقية مختلفة. توصي إرشادات استكشاف الأخطاء وإصلاحها الرسمية لـ Nextcloud بمطابقة مُعرّف الطلب الفاشل مع سجل الخادم.

  1. سجّل الوقت، ورسالة الخطأ الكاملة للمتصفح، وأي معرّف طلب معروض. لا تنشر سجلات الدخول الخاصة دون إزالة الأسرار والمعلومات الشخصية.
  2. ابحث عن دليل البيانات المُكوّن في config/config.php. ملف السجل الافتراضي هو data/nextcloud.log، ولكن قد تُسجّل عمليات النشر المُخصصة في مكان آخر.
  3. في نظام لينكس تقليدي، تحقق من الإدخالات الأخيرة ثم سجلات خدمة قاعدة البيانات. استبدل مسار Nextcloud الفعلي الخاص بك.
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'

ينطبق الأمر الثاني فقط على مضيف يعمل بنظام MariaDB ضمن systemd؛ استخدم سجلات خدمة PostgreSQL أو سجلات الحاوية لعمليات النشر الأخرى. ابحث عن رمز الاستثناء SQLSTATEوأول سبب متعلق بقاعدة البيانات بدلاً من الاعتماد على سطر تتبع المكدس الأخير.

دليل السجلأول فحص مفيد
SQLSTATE[HY000] [2002]عملية قاعدة البيانات، اسم المضيف، المنفذ، مسار المقبس، أو الوصول إلى ملف SQLite؛ يحدد برنامج التشغيل التفسير.
SQLSTATE[HY000] [1040]استنفاد اتصالات MySQL/MariaDB والجلسات النشطة.
MySQL server has gone awayإعادة تشغيل قاعدة البيانات، وانقطاع الاتصال، وضغط الموارد، وسجلات الخادم.
تم رفض المصادقة أو الوصولحساب قاعدة البيانات، وكلمة المرور، والوصول إلى الشبكة، والأذونات.
جدول أو علاقة أو عمود مفقودهل اكتملت ترقية قاعدة البيانات وهل يتطابق الكود المثبت مع مخططها؟

تُغطّى الأمثلة الثلاثة الأولى في قسم الأخطاء الشائعة الموثّقة في Nextcloud. لا تعني رسالة "الجدول المفقود" وجود إذن لإنشاء الجدول يدويًا: حدّد أولًا سبب فشل عملية الترحيل بدقة.

قم بحماية النظام قبل تطبيق الإصلاح

قبل إعادة محاولة عمليات النقل، احتفظ بنسخة احتياطية قابلة للاستعادة من قاعدة البيانات، بالإضافة إلى إعدادات Nextcloud وبياناتها. يشمل إجراء النسخ الاحتياطي الرسمي أيضًا التطبيقات والقوالب المخصصة، إن وجدت. تأكد من أن النسخة الاحتياطية تعود إلى نفس النقطة الزمنية؛ إذ لا يمكن لنسخة احتياطية تحتوي على التعليمات البرمجية فقط استعادة قاعدة بيانات تم تغييرها جزئيًا.

  • قم بإيقاف عمليات المزامنة والوظائف التي تعمل في الخلفية مؤقتًا أثناء فترة الاسترداد كلما أمكن ذلك، وخاصة عند كتابة قواعد البيانات أو ترقيتها.
  • احتفظ بسجل لإصدارات Nextcloud القديمة والجديدة، ومحرك/إصدار قاعدة البيانات، وإصدار PHP، وطريقة التحديث.
  • لا تقم بحذف جداول قاعدة البيانات، أو استيراد مخطط فارغ، أو تشغيل استعلامات SQL عشوائية من المنتديات، أو استعادة مكون واحد فقط من نسخة احتياطية متعددة الأجزاء بشكل متكرر.

تفترض الأوامر أدناه تثبيت Debian/Ubuntu الشائع في المسار /var/www/nextcloud، مع www-dataاستخدام حساب خادم الويب الخاص به. يجب تشغيل الأمر occباستخدام مستخدم HTTP المناسب؛ إذ أن عمليات التثبيت الخاصة بالحزم، وDocker، وSnap، وAIO، والأنظمة المُدارة لها مسارات وطرق تنفيذ مختلفة. يشرح مرجع أمر occ هذه المتطلبات.

قم باستعادة اتصال قاعدة البيانات قبل الترحيل

تحقق من إعدادات خدمة قاعدة البيانات واتصال Nextcloud

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

sudo systemctl status mariadb
sudo systemctl status postgresql

بالنسبة لخادم قاعدة بيانات منفصل، تحقق أيضًا من نظام أسماء النطاقات (DNS)، وقواعد جدار الحماية، والمنفذ المُختار، وإمكانية الوصول إلى الشبكة من مُضيف تطبيق Nextcloud أو حاويته. افحص config/config.phpالإعدادات التالية: dbtype` <hostname>` dbhost، dbnameو` <portname>`، و`<portname> dbuser`. يشرح مرجع معلمات التكوين أسماء المضيفين والمنافذ وبنية مقابس Unix. تجنب لصق هذه المعلومات dbpasswordفي التذاكر العامة أو أوامر shell التي تُعرض في سجل الأحداث.

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

تحقق من توافق وقت التشغيل بعد التحديث

قد يؤدي التحديث المتزامن لبرنامج PHP أو خادم قاعدة البيانات إلى تعطيل تثبيت كان يعمل سابقًا. لذا، قارن إصدار Nextcloud المستهدف بمتطلبات النظام الرسمية وملاحظات الإصدار، بدلًا من افتراض أن جميع إصدارات برامج التشغيل والخوادم المثبتة حاليًا لا تزال مدعومة. وفقًا لوثائق Nextcloud 35 التي تم الاطلاع عليها، يدعم الإصدار PHP 8.3 إلى 8.5؛ أما إصدارات قواعد البيانات المقبولة فهي موثقة هناك بشكل منفصل. للإصدارات السابقة قيود مختلفة.

تأكد أيضًا من تفعيل برنامج تشغيل قاعدة بيانات PHP المطلوب للمحرك الذي اخترته في كلٍ من بيئة سطر الأوامر وبيئة الويب لـ PHP. لا تقم بتخفيض إصدار خادم قاعدة البيانات بشكل تلقائي بعد ترحيل المخطط: استعد فقط من نسخة احتياطية متوافقة ومتسقة.

أكمل أو أصلح عملية ترقية Nextcloud المتوقفة

بمجرد أن يصبح الوصول إلى قاعدة البيانات ممكناً ويتم تأمين نسخة احتياطية، انتقل إلى دليل تثبيت Nextcloud وتحقق من حالته:

cd /var/www/nextcloud
sudo -E -u www-data php occ status

إذا أبلغ Nextcloud بأن الترقية معلقة أو غير مكتملة، فاتبع مسار الترقية المدعوم لإصداري المصدر والهدف المثبتين. للتثبيت اليدوي التقليدي، قم بتشغيل:

sudo -E -u www-data php occ upgrade

لا تقاطع الأمر أو تُشغّل عمليات ترقية متزامنة. اقرأ مخرجاته: فالترقية الناجحة تختلف عن حدوث خطأ في اتصال قاعدة البيانات. تُقدّم وثائق الترقية اليدوية لـ Nextcloud توصيات واضحة بشأن occ upgradeالحالات التي تتوقف فيها عملية الترقية عبر الويب، وما maintenance:repairإذا كان مسار الترقية بحاجة إلى إصلاح.

sudo -E -u www-data php occ maintenance:repair

استخدم هذه الطريقة maintenance:repairبعد تحليل سبب الفشل؛ فهي ليست بديلاً عن إصلاح بيانات الاعتماد الخاطئة، أو قاعدة البيانات المتوقفة، أو بيئة التشغيل غير المتوافقة. في حال occ upgradeفشل عملية ترحيل SQL محددة، احفظ الاستثناء بدقة وابحث عن حل خاص بالإصدار أو استعد النسخة الاحتياطية المطابقة بالكامل بدلاً من تجربة أوامر DDL اليدوية.

لا تتعامل مع تحذيرات المخطط إلا بعد الترقية الناجحة

يتم تأجيل بعض عمليات الترحيل عمدًا. في نسخة عاملة، قد تطلب نظرة عامة من المسؤول أعمدة أو فهارس أو مفاتيح أساسية اختيارية. توفر هذه الأوامر معاينة تجريبية عند دعمها من قِبل هذا الإصدار.

sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run

نفّذ الأمر المناسب بدون خيار "تشغيل" --dry-runإلا إذا استدعت المشكلة المسجلة أو الفحص الإداري ذلك، وبعد مراجعة التغيير المقترح. قد تستغرق عمليات الصيانة هذه وقتًا على قواعد البيانات الكبيرة. يوفر Nextcloud 35 توثيقًا إضافيًا db:schema:check؛ فلا تفترض وجوده في الفروع الأقدم. راجع مرجع أوامر قاعدة البيانات لمعرفة السلوك الخاص بكل إصدار.

تحقق من عملية الاسترداد وأعد فتح الوصول

  1. كرر العملية sudo -E -u www-data php occ status. تأكد من أن الإصدار المثبت يطابق الإصدار المقصود، وأنه لا توجد حاجة إلى ترقية، وأنه لا يوجد استثناء SQL حرج جديد.
  2. إذا كان وضع الصيانة لا يزال قيد التشغيل واكتملت الترقية بنجاح ، فقم بتعطيله باستخدام sudo -E -u www-data php occ maintenance:mode --off.
  3. افتح واجهة المستخدم الرسومية، وسجّل الدخول، واعرض قائمة الملفات، ثم قم بتحميل وتنزيل ملفات صغيرة مصرح بها. راقب nextcloud.logأثناء هذه الفحوصات بحثًا عن أي استثناءات جديدة في قاعدة البيانات.
  4. استأنف المهام المجدولة ومزامنة العملاء، ثم راجع إعدادات الإدارة بحثًا عن أي تحذيرات متبقية في قاعدة البيانات.

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

اترك تعليقاً

انقل بيانات Nextcloud إلى محرك أقراص خارجي دون التأثير على مساحة التخزين

انقل بيانات Nextcloud إلى محرك أقراص خارجي دون التأثير على مساحة التخزين

قم بنقل دليل بيانات Nextcloud الخاص بنظام Linux بأمان إلى محرك أقراص خارجي باستخدام تركيب UUID ثابت، ووضع الصيانة، ونسخة تم التحقق منها، والرابط الرمزي للمسار الأصلي.

خطأ في قاعدة بيانات Nextcloud بعد التحديث: ما الذي يجب التحقق منه أولاً

استعادة الوصول إلى Nextcloud بعد التحديث عن طريق تشخيص أخطاء SQL، والتحقق من اتصال قاعدة البيانات، وإكمال عمليات الترحيل المتقطعة بأمان.

إعادة تعيين كلمة مرور مسؤول Nextcloud المفقودة باستخدام OCC

استخدم أمر OCC الخاص بـ Nextcloud لإعادة تعيين كلمة مرور المسؤول من واجهة سطر الأوامر الخاصة بالخادم، مع إرشادات حول أسماء المستخدمين والأذونات وموفري تسجيل الدخول الخارجيين.

أضف رأس HSTS إلى نقطة نهاية HTTPS التي تخدم Nextcloud

قم بإزالة تحذير HSTS الخاص بـ Nextcloud عن طريق تعيين العنوان في Apache أو NGINX أو وكيل TLS الخاص بك، ثم تحقق من استجابة HTTPS العامة بأمان.

استكشاف أخطاء تثبيت تطبيقات Nextcloud التي تُبلغ عن عدم وجود اتصال بالإنترنت وإصلاحها

استكشاف أخطاء تثبيت تطبيقات Nextcloud التي تُبلغ عن عدم وجود اتصال بالإنترنت وإصلاحها

تتبع حالات فشل تثبيت التطبيقات من متجر التطبيقات إلى مشاكل في نظام أسماء النطاقات (DNS) أو بروتوكول HTTPS أو الخادم الوكيل أو بروتوكول TLS أو مشاكل في التكوين من خادم Nextcloud نفسه.

التحكم في ارتفاعات استخدام وحدة المعالجة المركزية في Nextcloud Preview باستخدام قائمة انتظار مجدولة

انقل العمل على الصور المصغرة إلى جدول زمني مُتحكم به في الخلفية، وقم بتقليص أحجام المعاينة غير المستخدمة، وتحقق من قائمة الانتظار دون إثقال خادم Nextcloud الخاص بك.

تجاوز مرحلة "معالجة الملفات" في مزامنة سطح المكتب مع Nextcloud

ابحث عن الملف أو قاعدة الاستبعاد أو مشكلة الاتصال أو حالة قاعدة بيانات العميل التي تعيق مزامنة Nextcloud، ثم تحقق من عمليات التحميل والتنزيل بأمان.

قم بإزالة تحذير Nextcloud OPcache عن طريق ضبط الحد الأيمن

ابحث عن حد PHP OPcache الذي يتسبب في ظهور تحذير Nextcloud، وقم بتحديث تكوين PHP الصحيح للويب، وأعد التشغيل بأمان، وتحقق من النتيجة.

ربط Nextcloud بـ CODE Docker: الإعداد والمفاضلات

ربط Nextcloud بـ CODE Docker: الإعداد والمفاضلات

قارن بين الكود المدمج والكود القائم على Docker، ثم قم بتوصيل Collabora Online بـ Nextcloud من خلال وكيل عكسي آمن HTTPS.

أنشئ مجموعة Nextcloud مرنة باستخدام Galera

خطط لنشر Nextcloud عالي التوفر بشكل موثوق مع التخزين المشترك، وقفل Redis، وتوجيه MariaDB المدرك للنصاب، وفحوصات تجاوز الفشل العملية.