jackc/pgx · error

Cannot identify server version in

Error message

Cannot identify server version in %q

What it means

serverVersion could not extract a leading integer from the server_version parameter status, meaning the server did not identify itself as PostgreSQL (e.g. a proxy or non-PG backend). LoadTypes depends on the version to choose catalog SQL syntax.

Solutions

  1. Verify the endpoint is an actual PostgreSQL server
  2. Check the server_version reported via ParameterStatus for an unexpected format
  3. File an issue if a legitimate PostgreSQL-compatible server reports a version pgx should support
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at derived_types.go:260 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/501577c59a709628. Report an issue: GitHub.

Appendix: source

Thrown at derived_types.go:260

			result = append(result, nspType)
		}
		result = append(result, type_)
	}

	if err := rows.Err(); err != nil {
		return nil, fmt.Errorf("While processing rows: %w", err)
	}

	return result, nil
}

// serverVersion returns the postgresql server version.
func serverVersion(c *Conn) (int64, error) {
	serverVersionStr := c.PgConn().ParameterStatus("server_version")
	serverVersionStr = regexp.MustCompile(`^[0-9]+`).FindString(serverVersionStr)
	// if not PostgreSQL do nothing
	if serverVersionStr == "" {
		return 0, fmt.Errorf("Cannot identify server version in %q", serverVersionStr)
	}

	version, err := strconv.ParseInt(serverVersionStr, 10, 64)
	if err != nil {
		return 0, fmt.Errorf("postgres version parsing failed: %w", err)
	}
	return version, nil
}

View on GitHub (pinned to ec1a0befd2)