# 42000 — syntax_error_or_access_rule_violation

> PostgreSQL SQLSTATE 42000: syntax_error_or_access_rule_violation, source-backed diagnosis and recovery guidance.
---

# 42000

## At a glance {#at-a-glance}

SQLSTATE `42000` is **syntax_error_or_access_rule_violation** in Class `42`. `42000` is the broad syntax-error-or-access-rule umbrella. This batch keeps it as a definition boundary because fixed PostgreSQL paths report concrete child codes such as 42501 and 42601.

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| Field | Value |
| --- | --- |
| SQLSTATE | `42000` |
| Condition | `syntax_error_or_access_rule_violation` |
| Status | `active` |
| Known present by | `7.4` |
| Locked snapshots | `9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| Macros | `ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION` |
| Aliases | `—` |

<!-- source facts: data/errcodes/42000.json -->
<!-- END SQLSTATE FACTS -->

## Meaning {#meaning}

`42000` is the broad syntax-error-or-access-rule umbrella. This batch keeps it as a definition boundary because fixed PostgreSQL paths report concrete child codes such as 42501 and 42601.

## Diagnosis {#diagnosis}

First classify the server SQLSTATE and command phase. A client parser error or a locally raised exception does not prove the umbrella code, and a concrete child should not be widened to 42000.

## Response {#response}

Repair the concrete syntax or access rule named by the diagnostic and retry only that command. Preserve the child code in logs and metrics.

## Messages {#messages}

This page has no selected natural emitter or fixed child message for the umbrella code. Concrete backend paths in this batch report child SQLSTATEs such as `42501` or `42601`; a client exception without a server SQLSTATE is not sufficient to claim `42000`.

## Representative case {#case}

This page has no selected natural SQL run. The fixed source boundary is recorded without a synthetic trigger.

## Versions {#versions}

No natural SQL run is selected here. The fixed REL_18_6/REL_10_23 source boundary does not establish behavior for every intermediate release.

## Related {#related}

- [`42501` — insufficient_privilege](../42501/)
- [`42601` — syntax_error](../42601/)

## Sources {#sources}

- `src.errcodes.18.6` — fixed `errcodes.txt` definition at commit `724edf9bde9d356724ad384a2e196edc3c9f80f7`; SHA-256 `6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba` ([source](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt)).
- `src.calls.REL_18_6` / `src.calls.REL_10_23` — fixed call scans, SHA-256 `9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf` / `00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c`.
