إصلاح: psql: تعذر الاتصال بالخادم: لا يوجد مثل هذا الملف أو الدليل

تروج PostgreSQL لنفسها على أنها أكثر منصات تطبيقات قواعد البيانات مفتوحة المصدر تقدمًا ، ولدى دبيان لينكس بالتأكيد الكثير من الحزم التي تجعلها أكثر تعقيدًا. يمكنك أيضًا العثور على حمولات كبيرة من الحزم لـ PostgreSQL إذا كنت تعمل مع Ubuntu Server أو أي من دورات Ubuntu المختلفة ، نظرًا لأنها تستند إلى جوهر Debian. هذا المستوى من التعقيد والتطوير يجعل تحذيرات "تعذر الاتصال بالخادم" و "لا يوجد مثل هذا الملف أو الدليل" أكثر إزعاجًا.

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

إصلاح PostgreSQL لا يمكنه الاتصال بأخطاء الخادم

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

قد تجد أن هذا أوضح كل شيء. بخلاف ذلك ، قد تحصل على سطر يقرأ "psql: تعذر الاتصال بالخادم: لا يوجد مثل هذا الملف أو الدليل" ، مما يعني أنك تواجه مشكلات تتعلق بالإذن. إذا تلقيت رسالة الخطأ هذه ، فستحصل أيضًا على بعض النصوص الأخرى.

تحقق من حالة الخدمة إذا تلقيت هذه الرسالة للتأكد من تحميل الوحدات. يجب أن يكونوا كذلك ، لكن إذا لم يكونوا كذلك ، فقد ترغب في إعادة التشغيل. إذا تلقيت رسالة نصها "مُحمّل: محمّل (/lib/systemd/system/postgresql.service ؛ ممكّن)" ، فهذا يعني أنها قيد التشغيل. حاول إعادة تشغيل sudo service postgresql فقط لإجراء إعادة تشغيل قصيرة ومعرفة ما إذا كان ذلك يصحح أي شيء. عادةً لا يحدث ذلك ، ولكن قد يكون الأمر يستحق المحاولة اعتمادًا على ذلك.

بافتراض أن ذلك لم يساعد ، ألق نظرة داخل سجل PostgreSQL للبحث عن الأخطاء. في الحالة غير المحتملة التي تجد فيها شيئًا عن أخطاء الحزمة ، فقد تفقد إحدى وحدات SQL النمطية. هذا ليس سبب هذه المشاكل عادة ، لكن بالتأكيد لن يؤذي إلقاء نظرة على الأقل. على الأرجح ، ستصادف شيئًا يحذرك من أن "الأذونات يجب أن تكون u = rwx (0700)" و

أن "دليل البيانات" /var/lib/postgresql/9.6/main "لديه وصول جماعي أو عالمي" ، على الرغم من أنك قد ترى رقم إصدار مختلفًا اعتمادًا على خادم SQL الذي تقوم بتشغيله.

هذا لأن دبيان والتوزيعات المماثلة تتوقع أن يتحكم مستخدم ومجموعة postgres في هذه المجلدات بأذونات 0700 وجميع الملفات من خلال أذونات 0600 من أجل الأمان. كل ما عليك فعله هو تشغيل الأمر التالي في الجهاز لإصلاح الأذونات:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX ، go = /var/lib/postgresql/9.6/

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

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

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