{"record":{"id":"5381b73c8a34104c","repo":"sqlmapproject/sqlmap","slug":"only-one-non-sql-technique-switch-may-be-used-at-a","errorCode":null,"errorMessage":"only one non-SQL technique switch may be used at a time (found: %s). each is a self-contained scan for a different back-end class - pick one","messagePattern":"only one non-SQL technique switch may be used at a time \\(found: (.+?)\\)\\. each is a self-contained scan for a different back-end class - pick one","errorType":"exception","errorClass":"SqlmapSyntaxException","httpStatus":null,"severity":"error","filePath":"lib/core/option.py","lineNumber":2778,"sourceCode":"    try:\n        page, _, _ = Request.getPage(url=\"https://check.torproject.org/api/ip\", raise404=False)\n        tor_status = json.loads(page)\n    except (SqlmapConnectionException, TypeError, ValueError):\n        tor_status = None\n\n    if not tor_status or not tor_status.get(\"IsTor\"):\n        errMsg = \"it appears that Tor is not properly set. Please try using options '--tor-type' and/or '--tor-port'\"\n        raise SqlmapConnectionException(errMsg)\n    else:\n        infoMsg = \"Tor is properly being used\"\n        logger.info(infoMsg)\n\ndef _basicOptionValidation():\n    _nonSqlTechniques = [\"--%s\" % _ for _ in NONSQL_TECHNIQUES if conf.get(_)]\n    if len(_nonSqlTechniques) > 1:\n        errMsg = \"only one non-SQL technique switch may be used at a time (found: %s). \" % \", \".join(_nonSqlTechniques)\n        errMsg += \"each is a self-contained scan for a different back-end class - pick one\"\n        raise SqlmapSyntaxException(errMsg)\n\n    if conf.limitStart is not None and not (isinstance(conf.limitStart, int) and conf.limitStart > 0):\n        errMsg = \"value for option '--start' (limitStart) must be an integer value greater than zero (>0)\"\n        raise SqlmapSyntaxException(errMsg)\n\n    if conf.limitStop is not None and not (isinstance(conf.limitStop, int) and conf.limitStop > 0):\n        errMsg = \"value for option '--stop' (limitStop) must be an integer value greater than zero (>0)\"\n        raise SqlmapSyntaxException(errMsg)\n\n    if conf.level is not None and not (isinstance(conf.level, int) and conf.level >= 1 and conf.level <= 5):\n        errMsg = \"value for option '--level' must be an integer value from range [1, 5]\"\n        raise SqlmapSyntaxException(errMsg)\n\n    if conf.risk is not None and not (isinstance(conf.risk, int) and conf.risk >= 1 and conf.risk <= 3):\n        errMsg = \"value for option '--risk' must be an integer value from range [1, 3]\"\n        raise SqlmapSyntaxException(errMsg)\n\n    if isinstance(conf.limitStart, int) and conf.limitStart > 0 and \\","sourceCodeStart":2760,"sourceCodeEnd":2796,"githubUrl":"https://github.com/sqlmapproject/sqlmap/blob/0a35b20e3953d341be6c7ac75ccb0b3362540c8d/lib/core/option.py#L2760-L2796","documentation":"Validation guard in _basicOptionValidation: more than one mutually exclusive non-SQL technique switch (members of NONSQL_TECHNIQUES, e.g. --forms vs a request-file based scan class) was enabled simultaneously; each is a self-contained scan for a different back-end class, so only one may be active.","triggerScenarios":"Thrown at lib/core/option.py:2778 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep only one non-SQL technique switch on the command line","Run sqlmap once per technique if multiple scan classes are needed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0a35b20e3953d341be6c7ac75ccb0b3362540c8d","analyzedAt":"2026-08-26T23:02:52.002Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}