sqlmapproject/sqlmap · error · QueryBudgetExceeded

oracle query budget exhausted at %d calls

Error message

oracle query budget exhausted at %d calls

What it means

Error "oracle query budget exhausted at %d calls" thrown in sqlmapproject/sqlmap.

Source

Thrown at extra/esperanto/oracle.py:58

    def _emitChar(self, partial, total):
        # live per-character feedback DURING a long extraction, so the user sees movement
        # instead of a frozen prompt (a whole framed row is one long silent read otherwise) -
        # suppressed during probe phases (see _emit) so a discovery probe doesn't animate
        if self._charProgress and not self._probing:
            try:
                self._charProgress(partial, total)
            except Exception:
                pass

    def _probe(self, condition):
        # ONE tri-state evaluation: True / False / None(persistent error). a raised
        # oracle is retried (transient) before being reported as an error - a
        # wrong-dialect probe legitimately errors, but a flaky connection must not
        # be allowed to read as a definitive False. counts every actual oracle call.
        for _ in range(self.retries + 1):
            if self.max_queries is not None and self._queries >= self.max_queries:
                raise QueryBudgetExceeded("oracle query budget exhausted at %d calls" % self._queries)
            self._queries += 1
            try:
                observed = self.oracle(condition)
            except Exception:
                continue
            # STRICT: only a real bool is an observation. None/0/''/other must not be
            # coerced to False (that silently corrupts bisection) - treat as undecided.
            if observed is True or observed is False:
                return observed
        return None

    def _ask(self, condition):
        # decided boolean, or raise OracleUndecided - NEVER manufacture False from an
        # unobservable probe (that would silently corrupt blind bisection). the oracle
        # must itself return False for unsupported/rejected SQL; a raised probe means
        # "could not observe" and, absent a quorum, is fatal.
        if self.quorum <= 1:
            r = self._probe(condition)

View on GitHub (pinned to 0a35b20e39)

When it happens

Trigger: Thrown at extra/esperanto/oracle.py:58 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26). Data as JSON: /api/errors/cfb27c51eea7bd57. Report an issue: GitHub.