{"record":{"id":"18b3b485e748d2fb","repo":"t8y2/dbx","slug":"unknown-method-s-18b3b4","errorCode":null,"errorMessage":"unknown method: %s","messagePattern":"unknown method: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/oracle-go/main.go","lineNumber":997,"sourceCode":"\t\t\tintParam(params, \"timeoutSecs\"),\n\t\t)\n\t\treturn map[string]any{\"plan\": plan, \"has_actual_stats\": false}, false, err\n\tcase \"execute_transaction\":\n\t\tresult, err := s.executeTransaction(params)\n\t\treturn result, false, err\n\tcase \"begin_manual_transaction\":\n\t\treturn map[string]bool{\"ok\": true}, false, s.beginManualTransaction(stringParam(params, \"schema\"))\n\tcase \"commit_manual_transaction\":\n\t\treturn map[string]bool{\"ok\": true}, false, s.commitManualTransaction()\n\tcase \"rollback_manual_transaction\":\n\t\treturn map[string]bool{\"ok\": true}, false, s.rollbackManualTransaction()\n\tcase \"disconnect\":\n\t\treturn map[string]bool{\"ok\": true}, false, s.disconnect()\n\tcase \"shutdown\":\n\t\t_ = s.disconnect()\n\t\treturn map[string]bool{\"ok\": true}, true, nil\n\tdefault:\n\t\treturn nil, false, fmt.Errorf(\"unknown method: %s\", method)\n\t}\n}\n\nfunc (s *server) connect(params connectParams) error {\n\t_ = s.disconnect()\n\tdb, err := openConfiguredSessionDB(params, 15*time.Second)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmajorVersion, versionKnown := oracleServerMajorVersion(db, 15*time.Second)\n\ts.db = db\n\ts.params = params\n\ts.legacyLOBFetchDeferred = shouldUseLegacyOracleLOBFetch(params, majorVersion, versionKnown)\n\treturn nil\n}\n\nfunc openConfiguredSessionDB(params connectParams, timeout time.Duration) (*sql.DB, error) {\n\tdb, err := openAndPingDB(params, timeout)","sourceCodeStart":979,"sourceCodeEnd":1015,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/oracle-go/main.go#L979-L1015","documentation":"The JSON-RPC style dispatch in the driver's server routes a requested method name through a switch; any method not matched falls into the default branch and returns this error. It is a protocol-level rejection indicating the client asked for a method this driver does not implement.","triggerScenarios":"Sending a request whose method string is misspelled, uses wrong casing, or belongs to a different driver/version (e.g. calling a MySQL-driver-only method against the Oracle driver, or an older/newer protocol method name).","commonSituations":"Client library and driver binary version mismatch; hand-crafted JSON-RPC requests in testing; method renamed between releases; copy-pasted method name from another driver.","solutions":["Check the method name spelling and casing against the driver's supported method list (connect, disconnect, shutdown, etc.)","Align client and driver versions so the client only sends methods this driver version implements","Log the full request payload to confirm the exact method string being dispatched","If adding a new method, add a case to the dispatch switch in the server's handle function"],"exampleFix":"// before\n{\"method\": \"ExecuteQuery\", \"params\": {...}} // unknown method\n// after\n{\"method\": \"query\", \"params\": {...}} // use an exact supported method name","handlingStrategy":"validation","validationCode":"var supportedMethods = map[string]bool{\"connect\": true, \"disconnect\": true, \"shutdown\": true /* ... */}\nif !supportedMethods[req.Method] { return fmt.Errorf(\"unsupported method %q for oracle driver\", req.Method) }","typeGuard":null,"tryCatchPattern":"resp, err := call(method, params)\nif err != nil && strings.Contains(err.Error(), \"unknown method\") {\n    return fmt.Errorf(\"oracle driver does not implement %q; check driver/client versions\", method)\n}","preventionTips":["Keep the client's method registry in sync with the driver version","Validate method names against a constant list before dispatch","Pin driver and client to matching versions in deployment","Test protocol integration after every upgrade"],"tags":["go","rpc","protocol","unknown-method"],"backgroundTag":"unknown-rpc-method","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}