brianc / node-postgres

PostgreSQL client for node.js.
https://node-postgres.com
MIT License
12.27k stars 1.22k forks source link

Unix sockets support on windows #3100

Open SvanteRichter opened 10 months ago

SvanteRichter commented 10 months ago

Thanks for the library! Had an issue with what probably is an edge-case, using unix sockets on windows.

UNIX sockets are supported by postgresql on windows (I can start and connect to a database with psql without listenening on any IP), but i cannot connect with node-postgres.

If I try something like

const client = new pg.Client({
  database: 'postgres',
  user: 'surface',
  password: 'surface',
  host: postgresqlServer.socketDir
})

or

const client = new pg.Client('postgres://surface:surface@surface//postgres?host=' + postgresqlServer.socketDir)

I get

  Error: getaddrinfo ENOTFOUND C:\Users\surface\Downloads\db\socket
      at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:118:26) {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'C:\\Users\\surface\\Downloads\\db\\socket'

But if I try with an actual psql.exe it works:

psql.exe -d 'postgres://surface:surface@surface/postgres?host=C:\Users\surface\Downloads\db\socket'

Had a similar issue with postgres.js so opened a issue there too: https://github.com/porsager/postgres/issues/737

alxndrsn commented 7 months ago

The URLs used in the two examples are different; is it deliberate?

  1. ..pg.Client('postgres://surface:surface@surface//postgres?...
  2. psql.exe -d 'postgres://surface:surface@surface/postgres?...

1 has a double / before postgres