jackc/pgx · error

argument found in sql query but not present in…

Error message

argument %s found in sql query but not present in StrictNamedArgs

What it means

StrictNamedArgs rewriting found a named parameter in the SQL that has no corresponding entry in the supplied arguments map. Strict semantics require every referenced name to be present.

Solutions

  1. Add the missing name to the NamedArgs map
  2. Use non-strict NamedArgs if unused names should be tolerated
  3. Fix typos between the SQL parameter name and the map key
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at named_args.go:194 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/9e0951fbd55a9285. Report an issue: GitHub.

Appendix: source

Thrown at named_args.go:194

	}

	sb := strings.Builder{}
	for _, p := range l.parts {
		switch p := p.(type) {
		case string:
			sb.WriteString(p)
		case namedArg:
			sb.WriteRune('$')
			sb.WriteString(strconv.Itoa(l.nameToOrdinal[p]))
		}
	}

	newArgs = make([]any, len(l.nameToOrdinal))
	for name, ordinal := range l.nameToOrdinal {
		var found bool
		newArgs[ordinal-1], found = na[string(name)]
		if isStrict && !found {
			return "", nil, fmt.Errorf("argument %s found in sql query but not present in StrictNamedArgs", name)
		}
	}

	if isStrict {
		for name := range na {
			if _, found := l.nameToOrdinal[namedArg(name)]; !found {
				return "", nil, fmt.Errorf("argument %s of StrictNamedArgs not found in sql query", name)
			}
		}
	}

	return sb.String(), newArgs, nil
}

func rawState(l *sqlLexer) stateFn {
	for {
		r, width := utf8.DecodeRuneInString(l.src[l.pos:])
		l.pos += width

View on GitHub (pinned to ec1a0befd2)