{"record":{"id":"12af9f9a527b383d","repo":"go-sql-driver/mysql","slug":"invalid-connectionattributes-value-v","errorCode":null,"errorMessage":"invalid connectionAttributes value: %v","messagePattern":"invalid connectionAttributes value: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dsn.go","lineNumber":682,"sourceCode":"\t\t\t}\n\n\t\t// I/O write Timeout\n\t\tcase \"writeTimeout\":\n\t\t\tcfg.WriteTimeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase \"maxAllowedPacket\":\n\t\t\tcfg.MaxAllowedPacket, err = strconv.Atoi(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// Connection attributes\n\t\tcase \"connectionAttributes\":\n\t\t\tconnectionAttributes, err := url.QueryUnescape(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid connectionAttributes value: %v\", err)\n\t\t\t}\n\t\t\tcfg.ConnectionAttributes = connectionAttributes\n\n\t\tdefault:\n\t\t\t// lazy init\n\t\t\tif cfg.Params == nil {\n\t\t\t\tcfg.Params = make(map[string]string)\n\t\t\t}\n\n\t\t\tif cfg.Params[key], err = url.QueryUnescape(value); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n","sourceCodeStart":664,"sourceCodeEnd":700,"githubUrl":"https://github.com/go-sql-driver/mysql/blob/03d76c7e07908e255ce62d126d07ede3f2365d86/dsn.go#L664-L700","documentation":"The 'connectionAttributes' DSN parameter supplies key-value session attributes sent in the connection handshake. Its value is url.QueryUnescape'd; a malformed percent-escape produces this error wrapping the unescape failure.","triggerScenarios":"A DSN like '?connectionAttributes=%ZZ' or any value with a '%' not followed by two hex digits.","commonSituations":"Programmatically building the attributes string and double-escaping or introducing a stray '%'; copying a value with unencoded special characters.","solutions":["Build the value with url.QueryEscape when constructing the DSN.","Use plain ASCII key=value pairs separated by commas.","Encode any literal '%' as %25."],"exampleFix":"// before\nsql.Open(\"mysql\", \"user@tcp(127.0.0.1:3306)/db?connectionAttributes=app%name=svc\")\n// after\nsql.Open(\"mysql\", \"user@tcp(127.0.0.1:3306)/db?connectionAttributes=app%25name=svc\")","handlingStrategy":"validation","validationCode":"// Validate the attribute value decodes before use.\nimport \"net/url\"\nif _, err := url.QueryUnescape(connAttrs); err != nil {\n    return err\n}","typeGuard":"null","tryCatchPattern":"// connectionAttributes errors surface at DSN parse time.\nif _, err := mysql.ParseDSN(dsn); err != nil {\n    return err\n}","preventionTips":["Construct connectionAttributes via url.QueryEscape.","Keep attribute keys/values ASCII-friendly.","Test DSN assembly with mysql.ParseDSN."],"tags":["go","mysql","dsn","config","session"],"backgroundTag":null,"analyzedSha":"03d76c7e07908e255ce62d126d07ede3f2365d86","analyzedAt":"2026-08-07T10:39:17.340Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}