# 53100 — disk_full

> PostgreSQL SQLSTATE 53100 的来源与诊断参考。
---

# 53100

## 速览 {#at-a-glance}
`53100` 表示文件写入进入明确的短写分支。固定路径覆盖基础备份输出和关系文件扩展；诊断会给出文件、已写/请求字节以及 offset 或 block。

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

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `53100` |
| 条件名 | `disk_full` |
| 状态 | `有效` |
| 已知存在于 | `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_DISK_FULL` |
| 别名 | `—` |

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

## 含义 {#meaning}
短写消息给出目标文件、已写/请求字节以及 offset 或 block，并提示 `Check free disk space.`。同一个 `md.c` 函数先把负的 `FileWrite` 结果交给 `errcode_for_file_access()` 和 `%m`；固定 helper 的 saved-errno 分支把 `ENOSPC` 映射为 53100，但没有列出 `EFBIG` 或 `EDQUOT`，它们会走 `ERRCODE_INTERNAL_ERROR` 默认分支。这是存储写入边界，不是普通 SQL 数据错误，也不能据此断言宿主卷已满。

## 诊断 {#diagnosis}
按消息定位文件系统和路径，检查空间、配额、挂载状态、写入错误及受影响的数据库或备份卷，再把 offset/block 和部分字节数与操作及服务器日志对应。若 primary 是 `could not ...: %m` 而不是短写模板，应检查保存的 errno：固定 helper 把 `ENOSPC` 映射为 53100，但未列出的 `EFBIG` 和 `EDQUOT` 会进入其 internal-error 默认分支。不能把 errno 对应的其他 SQLSTATE 重新标成 53100。

## 处理 {#response}
在指定文件系统释放或增加容量、修复报告的写入条件，或改用合适目标。部分基础备份或关系写入在验证前都应视为不完整；按该操作的恢复流程处理。显式事务中若发生此 `ERROR`，重试前执行 `ROLLBACK` 或 `ROLLBACK TO SAVEPOINT`；自动提交只有在存储原因修复后才能重试。不要在用户实例制造磁盘压力。

## 版本 {#versions}
锁定目录从 7.4 记录；引用写入路径来自 PostgreSQL 18.6，未执行磁盘满运行。

## 相关 {#related}
[`53000`](../53000/)

## 来源 {#sources}
[`src/backend/backup/basebackup_server.c#L177-L182`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/backup/basebackup_server.c#L177)

[`src/backend/storage/smgr/md.c#L521-L526`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/smgr/md.c#L521)

[`src/backend/storage/smgr/md.c#L512-L526`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/smgr/md.c#L512)

[`src/backend/utils/error/elog.c#L868-L938`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/error/elog.c#L868)

结构化[证据记录](../../data/evidence/53100.json)保存固定消息以及源码/运行边界。
