Troubleshooting: Database

Common database connection और query issues fix करें।

Connection Refused

Error: ECONNREFUSED 127.0.0.1:5432 या connect ECONNREFUSED 127.0.0.1:27017

इस error का मतलब है 1DevTool ने connection string में दिए host और port पर contact किया, पर वहां कुछ listen नहीं कर रहा था। Database server या तो चल नहीं रहा या अलग port पर listen कर रहा है।

Fixes:

  • Check करें database चल रहा है। PostgreSQL के लिए: terminal में pg_ctl status चलाएं। MySQL के लिए: mysqladmin status। Redis के लिए: redis-cli ping (आपको PONG मिलना चाहिए)। Service stopped हो तो start करें।
  • Port check करें। Default ports हैं 5432 (PostgreSQL), 3306 (MySQL/MariaDB), 27017 (MongoDB), और 6379 (Redis)। DATABASE_URL में port को उस port से compare करें जो database actually use कर रहा है।
  • Docker containers। Database Docker के अंदर चल रहा हो तो docker ps से check करें container चल रहा है। नहीं है तो docker start <container-name> से start करें। Confirm करें container का port host पर published है (docker ps output में 0.0.0.0:5432->5432/tcp देखें)।

Authentication Failed

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

Connection string में username या password database server से match नहीं करता।

Fixes:

  • DATABASE_URL या connection settings में username और password double-check करें। Supabase account password को database password से confuse करना easy है — ये अलग हैं। Supabase dashboard में Settings → Database पर दिखा password use करें।
  • Passwords में special characters। Password में @, #, /, या : हों तो इन characters को connection string में URL-encode करना होगा। जैसे @ बनता है %40 और # बनता है %23। Password p@ss#word URL में p%40ss%23word लिखा जाएगा।

SSL/TLS Required

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

कई cloud database providers (Supabase, Neon, Railway, Render) encrypted connections require करते हैं।

Fix: PostgreSQL connection string के end में ?sslmode=require जोड़ें:

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

MongoDB Atlas के लिए, connection string में mongodb+srv:// scheme use करें — यह automatically TLS enable करता है।


Query Timeout होती है

Cause: query बहुत ज़्यादा data scan कर रही है, या 1DevTool और database के बीच network connection mid-query drop हो गया।

Fixes:

  • Query में LIMIT clause जोड़ें data explore करते वक्त। जैसे: SELECT * FROM orders LIMIT 100
  • Specific query हमेशा slow हो तो check करें WHERE clause में columns पर indexes हैं। SQL editor में EXPLAIN ANALYZE <your query> चलाने से query plan दिखेगा।
  • Timeouts intermittently हों तो network check करें। VPN connections database connectivity को flaky बना सकते हैं।

MongoDB: Password में Special Characters

MongoDB password में @, /, :, या # हों तो connection string में उन characters को URL-encode करना होगा। ये characters URL में special meaning रखते हैं।

Common encodings: @%40, #%23, /%2F, :%3A

Example: password my@secret#pass connection string में my%40secret%23pass बनता है।


Docker Container से Connect नहीं हो रहा

Database Docker container के अंदर चल रहा है और 1DevTool से (जो host machine पर चलता है) connect करने की कोशिश कर रहे हैं, तो connection string में localhost use न करें। Host से localhost का मतलब host machine है — container नहीं।

इसकी बजाय host.docker.internal use करें:

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

यह special hostname Docker के अंदर से हमेशा host machine resolve करता है।