• 0

كيف أنهي جلسة Postgresql؟

أطور تطبيق Rails بالاعتماد على نمط Postgresql للتعامل مع قاعدة البيانات ولكنّني أحصل على بعض الأخطاء التّي تُخبرني بأنّني لست الوحيد الذي يتصل مع Postgresql وأنّ هناك جلسة اتّصال أخرى قيد التشغيل، فكيف أنهي الجلسات في Postgresql؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يُمكن إنهاء الجلسات والاتّصالات ببساطة في  Postgresql بإعادة تشغيل الخادم، وللقيام بذلك استعن بالأمر:

sudo service postgresql restart

يُمكنك إنهاء جميع الجلسات عدا جلسة اتّصالك بـ pg_terminate_backend وذلك وفق الشّيفرة التّالية:

SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

مع استبدال  database_name باسم قاعدة البيانات التّي تتصل بها.
قد تواجهك بعض المشاكل إذا كنت تستعمل إصدارا أقدم من الإصدار 9.2، لذلك من المُفضّل أن تُحدّث برمجية  Postgresql إلى آخر إصدار.
إذا لم تكن ترغب في تحديث برمجيّة  Postgresql على جهازك والإبقاء على النّسخة الحاليّة فعليك بتغيير الشّيفرة أعلاه لتُطابق التّالي:

SELECT 
    pg_terminate_backend(procpid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    procpid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

الاختلاف هو أن  procpid استبدلت بعد الإصدار 9.2 بـ pid.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن