Troubleshooting: Database

Perbaiki masalah koneksi dan query database umum.

Connection Refused

Error: ECONNREFUSED 127.0.0.1:5432 atau connect ECONNREFUSED 127.0.0.1:27017

Error ini berarti 1DevTool menghubungi host dan port di connection string Anda, tapi tidak ada yang mendengarkan di sana. Database server mungkin tidak berjalan atau mendengarkan di port berbeda.

Perbaikan:

  • Cek apakah database berjalan. Untuk PostgreSQL: jalankan pg_ctl status di terminal. Untuk MySQL: mysqladmin status. Untuk Redis: redis-cli ping (Anda harus mendapat PONG). Mulai service jika berhenti.
  • Cek port. Port default adalah 5432 (PostgreSQL), 3306 (MySQL/MariaDB), 27017 (MongoDB), dan 6379 (Redis). Bandingkan port di DATABASE_URL Anda dengan port yang sebenarnya digunakan database Anda.
  • Container Docker. Jika database Anda berjalan di dalam Docker, cek container berjalan dengan docker ps. Jika tidak terdaftar, mulai dengan docker start <container-name>. Juga konfirmasi port container dipublish ke host Anda (cari 0.0.0.0:5432->5432/tcp di output docker ps).

Authentication Failed

Error: password authentication failed for user "postgres" atau Access denied for user 'root'@'localhost'

Username atau password di connection string Anda tidak cocok dengan yang diharapkan database server.

Perbaikan:

  • Periksa ulang username dan password di DATABASE_URL atau pengaturan koneksi Anda. Mudah membingungkan password akun Supabase dengan password database — mereka berbeda. Gunakan password yang ditampilkan di dashboard Supabase di bawah Settings → Database.
  • Karakter khusus di password. Jika password Anda mengandung @, #, /, atau :, karakter ini harus di-URL-encode di connection string. Misalnya, @ menjadi %40 dan # menjadi %23. Password seperti p@ss#word akan ditulis sebagai p%40ss%23word di URL.

SSL/TLS Diperlukan

Error: SSL connection has been closed unexpectedly atau server requires SSL but client does not support it

Banyak provider database cloud (Supabase, Neon, Railway, Render) memerlukan koneksi terenkripsi.

Perbaikan: Tambahkan ?sslmode=require di akhir connection string PostgreSQL Anda:

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

Untuk MongoDB Atlas, gunakan skema mongodb+srv:// di connection string Anda — ini mengaktifkan TLS secara otomatis dan tidak perlu parameter tambahan.


Query Timeout

Penyebab: query memindai terlalu banyak data, atau koneksi jaringan antara 1DevTool dan database terputus di tengah query.

Perbaikan:

  • Tambahkan klausa LIMIT ke query Anda saat mengeksplorasi data. Misalnya: SELECT * FROM orders LIMIT 100.
  • Jika query spesifik selalu lambat, cek apakah kolom di klausa WHERE Anda memiliki index. Menjalankan EXPLAIN ANALYZE <query Anda> di SQL editor akan menunjukkan query plan.
  • Jika timeout terjadi secara intermiten, cek jaringan Anda. Koneksi VPN khususnya bisa menyebabkan konektivitas database yang tidak stabil.

MongoDB: Karakter Khusus di Password

Jika password MongoDB Anda mengandung @, /, :, atau #, Anda harus URL-encode karakter tersebut di connection string. Karakter ini memiliki makna khusus di URL dan akan merusak parsing jika digunakan secara literal.

Encoding umum: @%40, #%23, /%2F, :%3A.

Contoh: password my@secret#pass menjadi my%40secret%23pass di connection string.


Tidak Bisa Terhubung ke Container Docker

Jika database Anda berjalan di dalam container Docker dan Anda mencoba terhubung dari 1DevTool (yang berjalan di mesin host Anda), jangan gunakan localhost di connection string Anda. Dari host, localhost merujuk ke mesin host itu sendiri — bukan container.

Gunakan host.docker.internal sebagai gantinya:

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

Hostname khusus ini selalu resolve ke mesin host Anda dari dalam Docker, dan ke loopback interface yang benar dari sisi host.