{
  "schema_version": 2,
  "id": "develop/reference/errors/common/execabort",
  "title": "EXECABORT error",
  "url": "https://redis.io/docs/latest/develop/reference/errors/common/execabort/",
  "summary": "A transaction was discarded because one of its commands had an error.",
  "tags": [
    "docs",
    "develop",
    "stack",
    "oss",
    "rs",
    "rc",
    "oss",
    "kubernetes",
    "clients"
  ],
  "last_updated": "2026-11-02T15:10:28+01:00",
  "page_type": "content",
  "content_hash": "70511d0965a29dc352b3b6a5e76ac9b63a8d962e31a4f43a597c57395f8dcf89",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Redis returns this error from [`EXEC`](https://redis.io/docs/latest/commands/exec) when a command in the transaction couldn't be queued. Redis then discards the whole transaction, so none of its commands run.\n\n[code example]"
    },
    {
      "id": "example",
      "title": "Example",
      "role": "example",
      "text": "Between [`MULTI`](https://redis.io/docs/latest/commands/multi) and `EXEC`, Redis queues each command to run later. A command with an error, such as an unknown command name, is rejected instead of queued. `EXEC` then refuses to run the transaction:\n\n[code example]"
    },
    {
      "id": "how-to-fix-it",
      "title": "How to fix it",
      "role": "content",
      "text": "Look at the reply to each command in the transaction. The command that failed got an error instead of `QUEUED`, and that error tells you what to fix. Common ones are [`ERR unknown command`](https://redis.io/docs/latest/develop/reference/errors/common/err-unknown-command) and [`ERR wrong number of arguments`](https://redis.io/docs/latest/develop/reference/errors/common/err-wrong-number-of-arguments).\n\nIf Redis refuses the `EXEC` command itself, the message gives the reason after a colon. For example, when the user isn't allowed to run `EXEC`:\n\n[code example]\n\nIn redis-py, a transaction pipeline raises the error of the command that failed, rather than `EXECABORT`. For example: `Command # 1 (FOO) of pipeline caused error: unknown command 'FOO'`.\n\nErrors that happen while `EXEC` runs the commands don't discard the transaction. For example, a [`WRONGTYPE`](https://redis.io/docs/latest/develop/reference/errors/common/wrongtype) error makes only that command fail. The other commands still run, and `EXEC` returns the error in its list of replies. See [Errors inside a transaction](https://redis.io/docs/latest/develop/using-commands/transactions#errors-inside-a-transaction)."
    }
  ],
  "examples": [
    {
      "id": "overview-ex0",
      "language": "plaintext",
      "code": "EXECABORT Transaction discarded because of previous errors.",
      "section_id": "overview"
    },
    {
      "id": "example-ex0",
      "language": "plaintext",
      "code": "> MULTI\nOK\n> FOO\n(error) ERR unknown command 'FOO'\n> SET a 1\nQUEUED\n> EXEC\n(error) EXECABORT Transaction discarded because of previous errors.",
      "section_id": "example"
    },
    {
      "id": "how-to-fix-it-ex0",
      "language": "plaintext",
      "code": "EXECABORT Transaction discarded because of: NOPERM User <username> has no permissions to run the 'exec' command",
      "section_id": "how-to-fix-it"
    }
  ]
}
