แก้ปัญหา: Database

แก้ไขการเชื่อมต่อ database และปัญหา query ทั่วไป

Connection Refused

ข้อผิดพลาด: ECONNREFUSED 127.0.0.1:5432 หรือ connect ECONNREFUSED 127.0.0.1:27017

ข้อผิดพลาดนี้หมายความว่า 1DevTool เอื้อมไปถึง host และ port ใน connection string ของคุณ แต่ไม่มีอะไรฟังอยู่ที่นั่น Database server ไม่ได้รันอยู่หรือกำลังฟังบนพอร์ตอื่น

วิธีแก้ไข:

  • ตรวจสอบว่า database รันอยู่ สำหรับ PostgreSQL: รัน pg_ctl status ใน terminal สำหรับ MySQL: mysqladmin status สำหรับ Redis: redis-cli ping (คุณควรได้ PONG) เริ่มบริการหากมันหยุด
  • ตรวจสอบพอร์ต พอร์ตเริ่มต้นคือ 5432 (PostgreSQL), 3306 (MySQL/MariaDB), 27017 (MongoDB) และ 6379 (Redis) เปรียบเทียบพอร์ตใน DATABASE_URL ของคุณกับพอร์ตที่ database ของคุณใช้จริง
  • Docker containers หาก database ของคุณรันอยู่ใน Docker ตรวจสอบว่า container รันอยู่ด้วย docker ps หากมันไม่อยู่ในรายการ เริ่มมันด้วย docker start <container-name> ยืนยันว่าพอร์ตของ container ถูก publish ไปยัง host ของคุณ (หา 0.0.0.0:5432->5432/tcp ใน output ของ docker ps)

Authentication Failed

ข้อผิดพลาด: password authentication failed for user "postgres" หรือ Access denied for user 'root'@'localhost'

Username หรือ password ใน connection string ของคุณไม่ตรงกับที่ database server คาด

วิธีแก้ไข:

  • ตรวจสอบ username และ password ใน DATABASE_URL หรือการตั้งค่าการเชื่อมต่อของคุณอีกครั้ง ง่ายที่จะสับสนรหัสผ่านบัญชี Supabase ของคุณกับรหัสผ่าน database — พวกมันต่างกัน ใช้รหัสผ่านที่แสดงใน Supabase dashboard ภายใต้ Settings → Database
  • Special characters ในรหัสผ่าน หากรหัสผ่านของคุณมี @, #, / หรือ : ตัวอักษรเหล่านี้ต้องถูก URL-encoded ใน connection string ตัวอย่าง @ กลายเป็น %40 และ # กลายเป็น %23 รหัสผ่านเช่น p@ss#word จะเขียนเป็น p%40ss%23word ใน URL

SSL/TLS Required

ข้อผิดพลาด: SSL connection has been closed unexpectedly หรือ server requires SSL but client does not support it

ผู้ให้บริการ cloud database หลายราย (Supabase, Neon, Railway, Render) ต้องการการเชื่อมต่อที่เข้ารหัส

วิธีแก้ไข: เพิ่ม ?sslmode=require ต่อท้าย connection string PostgreSQL ของคุณ:

postgresql://user:pass@host:5432/db?sslmode=require

สำหรับ MongoDB Atlas ใช้ scheme mongodb+srv:// ใน connection string ของคุณ — มันเปิดใช้งาน TLS อัตโนมัติและไม่ต้องการ parameter เพิ่ม


Query หมดเวลา

สาเหตุ: query กำลัง scan ข้อมูลมากเกินไป หรือการเชื่อมต่อเครือข่ายระหว่าง 1DevTool และ database หลุดกลาง query

วิธีแก้ไข:

  • เพิ่ม LIMIT clause ไปยัง query ของคุณขณะสำรวจข้อมูล ตัวอย่าง: SELECT * FROM orders LIMIT 100
  • หาก query เฉพาะช้าเสมอ ตรวจสอบว่าคอลัมน์ใน WHERE clause ของคุณมี indexes หรือไม่ การรัน EXPLAIN ANALYZE <your query> ใน SQL editor จะแสดง query plan ให้คุณ
  • หากหมดเวลาเป็นครั้งคราว ตรวจสอบเครือข่ายของคุณ การเชื่อมต่อ VPN โดยเฉพาะสามารถทำให้เกิดความไม่เสถียรของการเชื่อมต่อ database

MongoDB: Special Characters ในรหัสผ่าน

หากรหัสผ่าน MongoDB ของคุณมี @, /, : หรือ # คุณต้อง URL-encode ตัวอักษรเหล่านั้นใน connection string ตัวอักษรเหล่านี้มีความหมายพิเศษใน URL และจะทำลาย parsing หากใช้ตามตัวอักษร

การเข้ารหัสทั่วไป: @%40, #%23, /%2F, :%3A

ตัวอย่าง: รหัสผ่าน my@secret#pass กลายเป็น my%40secret%23pass ใน connection string


ไม่สามารถเชื่อมต่อกับ Docker Container

หาก database ของคุณรันอยู่ใน Docker container และคุณกำลังพยายามเชื่อมต่อจาก 1DevTool (ซึ่งรันบนเครื่อง host ของคุณ) อย่าใช้ localhost ใน connection string ของคุณ จาก host localhost อ้างถึงเครื่อง host เอง — ไม่ใช่ container

ใช้ host.docker.internal แทน:

postgresql://user:[email protected]:5432/db

Hostname พิเศษนี้ resolve ไปยังเครื่อง host ของคุณเสมอจากภายใน Docker และไปยัง loopback interface ที่ถูกต้องจากฝั่ง host