DEV Community

การแก้ไขปัญหา: ฐานข้อมูล Postgres ถูกใช้งานโดยผู้ใช้อื่น

เมื่อคุณพยายามเข้าถึงหรือลบฐานข้อมูล PostgreSQL และได้รับข้อความแสดงข้อผิดพลาดดังนี้:

ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Enter fullscreen mode Exit fullscreen mode

ข้อผิดพลาดนี้เกิดขึ้นเมื่อมีผู้ใช้หรือโปรแกรมอื่นกำลังเชื่อมต่อกับฐานข้อมูลที่คุณพยายามเข้าถึง ต่อไปนี้คือวิธีแก้ไขปัญหา:

ขั้นตอนที่ 1: ตรวจสอบเซสชันที่ใช้งานฐานข้อมูล

ใช้คำสั่ง SQL ต่อไปนี้เพื่อดูรายการเซสชันที่กำลังเชื่อมต่อกับฐานข้อมูลของคุณ:

SELECT * FROM pg_stat_activity WHERE datname = '<ชื่อฐานข้อมูล>';
Enter fullscreen mode Exit fullscreen mode

แทน <ชื่อฐานข้อมูล> ด้วยชื่อฐานข้อมูลที่คุณกำลังตรวจสอบ
คำสั่งนี้จะแสดงข้อมูลเกี่ยวกับเซสชันทั้งหมดที่กำลังใช้งานฐานข้อมูลนั้น รวมถึง PID (Process ID), ชื่อผู้ใช้, แอปพลิเคชันที่เชื่อมต่อ และอื่น ๆ

ขั้นตอนที่ 2: ยกเลิกการเชื่อมต่อเซสชัน

หลังจากที่คุณได้ตรวจสอบเซสชันแล้ว คุณสามารถยกเลิกการเชื่อมต่อทั้งหมดโดยใช้คำสั่งต่อไปนี้:

SELECT pg_terminate_backend(pid)
FROM pg_stat_get_activity(NULL::integer)
WHERE datid=(SELECT oid from pg_database where datname = '<ชื่อฐานข้อมูล>');
Enter fullscreen mode Exit fullscreen mode

แทน <ชื่อฐานข้อมูล> ด้วยชื่อฐานข้อมูลที่คุณต้องการยกเลิกการเชื่อมต่อ
คำสั่งนี้จะยกเลิกการเชื่อมต่อทุกเซสชันที่กำลังใช้งานฐานข้อมูลที่ระบุ

ข้อควรระวัง

  • การยกเลิกการเชื่อมต่อเซสชันอาจส่งผลกระทบต่อผู้ใช้หรือแอปพลิเคชันอื่นที่กำลังใช้งานฐานข้อมูล ควรใช้ความระมัดระวังและแจ้งเตือนผู้ใช้ก่อนดำเนินการ
  • หากเป็นไปได้ ควรตรวจสอบและปิดการเชื่อมต่อจากแอปพลิเคชันหรือผู้ใช้อื่นๆ ก่อนที่จะใช้คำสั่งยกเลิกการเชื่อมต่อโดยตรง
  • ในสภาพแวดล้อมการผลิต ควรวางแผนการบำรุงรักษาฐานข้อมูลอย่างรอบคอบเพื่อหลีกเลี่ยงการหยุดชะงักของบริการ -หลังจากยกเลิกการเชื่อมต่อแล้ว ควรตรวจสอบอีกครั้งเพื่อให้แน่ใจว่าไม่มีเซสชันใหม่เชื่อมต่อเข้ามา

การใช้คำสั่งเหล่านี้อย่างระมัดระวังจะช่วยให้คุณจัดการกับปัญหาการเข้าถึงฐานข้อมูลที่ถูกใช้งานโดยผู้ใช้อื่นได้อย่างมีประสิทธิภาพ

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay