{"id":"f0f456479985cb42","repo":"jackc/pgx","slug":"bad-startup-message-version-number-expected-d-or","errorCode":null,"errorMessage":"Bad startup message version number. Expected %d or %d, got %d","messagePattern":"Bad startup message version number\\. Expected (.+?) or (.+?), got (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pgproto3/startup_message.go","lineNumber":39,"sourceCode":"\tProtocolVersion uint32\n\tParameters      map[string]string\n}\n\n// Frontend identifies this message as sendable by a PostgreSQL frontend.\nfunc (*StartupMessage) Frontend() {}\n\n// Decode decodes src into dst. src must contain the complete message with the exception of the initial 1 byte message\n// type identifier and 4 byte message length.\nfunc (dst *StartupMessage) Decode(src []byte) error {\n\tif len(src) < 4 {\n\t\treturn errors.New(\"startup message too short\")\n\t}\n\n\tdst.ProtocolVersion = binary.BigEndian.Uint32(src)\n\trp := 4\n\n\tif dst.ProtocolVersion != ProtocolVersion30 && dst.ProtocolVersion != ProtocolVersion32 {\n\t\treturn fmt.Errorf(\"Bad startup message version number. Expected %d or %d, got %d\", ProtocolVersion30, ProtocolVersion32, dst.ProtocolVersion)\n\t}\n\n\tdst.Parameters = make(map[string]string)\n\tfor {\n\t\tidx := bytes.IndexByte(src[rp:], 0)\n\t\tif idx < 0 {\n\t\t\treturn &invalidMessageFormatErr{messageType: \"StartupMessage\"}\n\t\t}\n\t\tkey := string(src[rp : rp+idx])\n\t\trp += idx + 1\n\n\t\tidx = bytes.IndexByte(src[rp:], 0)\n\t\tif idx < 0 {\n\t\t\treturn &invalidMessageFormatErr{messageType: \"StartupMessage\"}\n\t\t}\n\t\tvalue := string(src[rp : rp+idx])\n\t\trp += idx + 1\n","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/jackc/pgx/blob/ec1a0befd22592cffffdeeb0a50311b506372f4c/pgproto3/startup_message.go#L21-L57","documentation":"Error \"Bad startup message version number. Expected %d or %d, got %d\" thrown in jackc/pgx.","triggerScenarios":"Thrown at pgproto3/startup_message.go:39 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"ec1a0befd22592cffffdeeb0a50311b506372f4c","analyzedAt":"2026-08-04T22:52:11.263Z","schemaVersion":2}