jackc/pgx · error

error parsing port ( ) from lookup

Error message

error parsing port (%s) from lookup: %w

What it means

A custom LookupFunc returned an address string that embedded a port, but that port was not a valid uint16. The %s shows the unparseable port string returned by the resolver.

Solutions

  1. Fix the custom LookupFunc to return valid host or host:port strings
  2. Ensure returned ports are numeric and in the 0-65535 range
  3. Return bare IPs/hostnames if ports are not needed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pgconn/pgconn.go:221 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of jackc/pgx@ec1a0befd2 (2026-08-04). Data as JSON: /api/errors/39d7e60dd6d11edf. Report an issue: GitHub.

Appendix: source

Thrown at pgconn/pgconn.go:221

				originalHostname: fb.Host,
				tlsConfig:        fb.TLSConfig,
			})

			continue
		}

		ips, err := config.LookupFunc(ctx, fb.Host)
		if err != nil {
			allErrors = append(allErrors, err)
			continue
		}

		for _, ip := range ips {
			splitIP, splitPort, err := net.SplitHostPort(ip)
			if err == nil {
				port, err := strconv.ParseUint(splitPort, 10, 16)
				if err != nil {
					return nil, []error{fmt.Errorf("error parsing port (%s) from lookup: %w", splitPort, err)}
				}
				network, address := NetworkAddress(splitIP, uint16(port))
				configs = append(configs, &connectOneConfig{
					network:          network,
					address:          address,
					originalHostname: fb.Host,
					tlsConfig:        fb.TLSConfig,
				})
			} else {
				network, address := NetworkAddress(ip, fb.Port)
				configs = append(configs, &connectOneConfig{
					network:          network,
					address:          address,
					originalHostname: fb.Host,
					tlsConfig:        fb.TLSConfig,
				})
			}
		}

View on GitHub (pinned to ec1a0befd2)