# 42000 — 语法错误或访问规则违反（syntax_error_or_access_rule_violation）

> PostgreSQL SQLSTATE 42000（语法错误或访问规则违反，syntax_error_or_access_rule_violation）的源码证据、诊断与处理参考。
---

# 42000 — 语法错误或访问规则违反

## 速览 {#at-a-glance}

SQLSTATE `42000` 是 Class `42` 中的 **syntax_error_or_access_rule_violation**。`42000` 是“语法错误或访问规则违反”的宽泛总类。本批固定 PostgreSQL 路径报告 42501、42601 等具体子码，因此只记录定义边界。

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

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `42000` |
| 条件名 | `syntax_error_or_access_rule_violation` |
| 状态 | `有效` |
| 已知存在于 | `7.4` |
| 锁定快照 | `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` |
| 宏 | `ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION` |
| 别名 | `—` |

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

## 含义 {#meaning}

`42000` 是“语法错误或访问规则违反”的宽泛总类。本批固定 PostgreSQL 路径报告 42501、42601 等具体子码，因此只记录定义边界。

## 诊断 {#diagnosis}

先按服务器 SQLSTATE 和命令阶段分类。客户端解析异常或本地抛出的异常不能证明总类码，也不要把具体子码扩大记录为 42000。

## 处理 {#response}

按诊断中指出的具体语法或访问规则修复并重试该命令，在日志和指标中保留子码。

## 报文 {#messages}

本页没有选定的自然 producer，也没有为该总类确认固定子报文。本批具体后端路径报告的是 `42501`、`42601` 等子 SQLSTATE；只有客户端异常而没有服务器 SQLSTATE 时，不能据此认定 `42000`。

## 代表案例 {#case}

本页没有选定的自然 SQL 运行；这里只记录固定源码边界，不使用伪造触发器。

## 版本 {#versions}

本页没有选定的自然 SQL 运行；固定的 REL_18_6/REL_10_23 源码边界不能证明所有中间版本的行为。

## 相关 {#related}

- [`42501` — 权限不足](../42501/)
- [`42601` — 语法错误](../42601/)

## 来源 {#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`.
