jackc/pgx · error
cannot scan empty string into %T
Error message
cannot scan empty string into %T
What it means
Text bool scan plan got a zero-length, non-NULL source. An empty string cannot be interpreted as a PostgreSQL boolean, unlike valid representations like 't', 'true', '1'.
Solutions
- Store/emit a real boolean representation ('t','true','yes','1','f','false','no','0')
- Treat empty strings as NULL before scanning, if that matches your data
- Fix upstream data production that created empty boolean text
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/bool.go:273 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/06b9f48c51c7d67f.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/bool.go:273
p, ok := (dst).(*bool)
if !ok {
return ErrScanTargetTypeChanged
}
*p = src[0] == 1
return nil
}
type scanPlanTextAnyToBool struct{}
func (scanPlanTextAnyToBool) Scan(src []byte, dst any) error {
if src == nil {
return fmt.Errorf("cannot scan NULL into %T", dst)
}
if len(src) == 0 {
return fmt.Errorf("cannot scan empty string into %T", dst)
}
p, ok := (dst).(*bool)
if !ok {
return ErrScanTargetTypeChanged
}
v, err := planTextToBool(src)
if err != nil {
return err
}
*p = v
return nil
}
type scanPlanBinaryBoolToBoolScanner struct{}View on GitHub (pinned to ec1a0befd2)