Vianetsintä: Tietokanta

Korjaa yleisiä tietokantayhteyden ja kyselyiden ongelmia.

Yhteys evätty

Virhe: ECONNREFUSED 127.0.0.1:5432 tai connect ECONNREFUSED 127.0.0.1:27017

Tämä virhe tarkoittaa, että 1DevTool otti yhteyttä yhteysmerkkijonossasi olevaan isäntään ja porttiin, mutta siellä ei ollut mitään kuuntelemassa. Tietokantapalvelin ei joko käy tai kuuntelee eri portissa.

Korjaukset:

  • Tarkista onko tietokanta käynnissä. PostgreSQL:lle: suorita pg_ctl status Terminalissa. MySQL:lle: mysqladmin status. Redisille: redis-cli ping (sinun pitäisi saada PONG). Käynnistä palvelu jos se on pysäytettynä.
  • Tarkista portti. Oletusportit ovat 5432 (PostgreSQL), 3306 (MySQL/MariaDB), 27017 (MongoDB) ja 6379 (Redis). Vertaa DATABASE_URL:ssasi olevaa porttia siihen porttiin, jota tietokantasi todella käyttää.
  • Docker-kontit. Jos tietokantasi käy Docker-kontin sisällä, tarkista että kontti käy komennolla docker ps. Jos sitä ei listata, käynnistä se komennolla docker start <kontin-nimi>. Varmista myös, että kontin portti on julkaistu isäntäkoneeseesi (etsi 0.0.0.0:5432->5432/tcp docker ps -tulosteesta).

Todennus epäonnistui

Virhe: password authentication failed for user "postgres" tai Access denied for user 'root'@'localhost'

Yhteysmerkkijonosi käyttäjätunnus tai salasana ei vastaa tietokantapalvelimen odottamaa.

Korjaukset:

  • Tarkista DATABASE_URL:ssasi tai yhteysasetuksissasi oleva käyttäjätunnus ja salasana uudelleen. On helppo sekoittaa Supabase-tilin salasana tietokannan salasanaan — ne ovat eri asioita. Käytä Supabase-hallintapaneelissa kohdassa Asetukset → Tietokanta näkyvää salasanaa.
  • Erikoismerkit salasanoissa. Jos salasanasi sisältää @, #, / tai :, nämä merkit täytyy URL-koodata yhteysmerkkijonossa. Esimerkiksi @ muuttuu %40:ksi ja # muuttuu %23:ksi. Salasana kuten p@ss#word kirjoitettaisiin p%40ss%23word URL:ssa.

SSL/TLS vaaditaan

Virhe: SSL connection has been closed unexpectedly tai server requires SSL but client does not support it

Monet pilvi-tietokantapalveluntarjoajat (Supabase, Neon, Railway, Render) vaativat salattuja yhteyksiä.

Korjaus: Lisää ?sslmode=require PostgreSQL-yhteysmerkkijonosi loppuun:

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

MongoDB Atlasille käytä mongodb+srv://-skeemaa yhteysmerkkijonossasi — se ottaa TLS:n automaattisesti käyttöön eikä tarvitse ylimääräistä parametriä.


Kysely aikakatkaistaan

Syy: kysely skannaa liikaa dataa tai 1DevToolin ja tietokannan välinen verkkoyhteys katkesi kesken kyselyn.

Korjaukset:

  • Lisää LIMIT-lauseke kyselyysi dataa tutkiessasi. Esimerkiksi: SELECT * FROM orders LIMIT 100.
  • Jos tietty kysely on aina hidas, tarkista onko WHERE-lausekkeesi sarakkeilla indeksit. EXPLAIN ANALYZE <kyselysi> -komennon suorittaminen SQL-editorissa näyttää sinulle kyselysuunnitelman.
  • Jos aikakatkaisut tapahtuvat satunnaisesti, tarkista verkkosi. VPN-yhteydet voivat erityisesti aiheuttaa epävakaata tietokantayhteyttä.

MongoDB: Erikoismerkit salasanassa

Jos MongoDB-salasanasi sisältää @, /, : tai #, nämä merkit täytyy URL-koodata yhteysmerkkijonossa. Näillä merkeillä on erityinen merkitys URL:ssa ja ne rikkovat jäsentämisen käytettynä kirjaimellisesti.

Yleisiä koodauksia: @%40, #%23, /%2F, :%3A.

Esimerkki: salasana my@secret#pass muuttuu my%40secret%23pass:ksi yhteysmerkkijonossa.


Ei voi yhdistää Docker-konttiin

Jos tietokantasi käy Docker-kontin sisällä ja yrität yhdistää 1DevToolista (joka käy isäntäkoneellasi), älä käytä localhost-osoitetta yhteysmerkkijonossasi. Isäntäkoneelta localhost viittaa isäntäkoneeseen itseen — ei konttiin.

Käytä sen sijaan host.docker.internal:

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

Tämä erityinen isäntänimi selvittää aina isäntäkoneesi Docker-kontin sisältä ja oikeaan loopback-liitäntään isäntäpuolelta.