اذهب إلى المحتوى

السؤال

نشر

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

Recommended Posts

  • 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.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...