选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 错误处理

CONFIGURATION PARAMETER错误处理

exit_on_error

发生任何错误后终止会话。

Terminate session on any error.

布尔 会话 引入 9.1 现存至 20 devel 0 次默认值变更

类型
布尔bool
上下文
会话任何用户都可在会话内用 SET 修改
默认值
off
分类
错误处理
引入版本
9.1
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

off 9.1 – 20

默认值自 PostgreSQL 9.1 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.14 错误处理 本站手册 官方原文

本版译文与 PostgreSQL 12 完全一致,下面就是同一段文字。

如果为开(on),任何错误将中止当前会话。默认情况下,这个值被设置为关(off),这样只有 FATAL 错误(致命)将中止会话。

机制详解

exit_on_error 这个名称在本项目 2008 年 Git 历史边界以及 PG9.0 源码的 GUC 表中已经存在。PG9.0 为它设置 GUC_NO_SHOW_ALL,因此该版 pg_settings 快照看不到它;PG9.1 的首次观测表示可见性变化,并不声称底层行为发明于 PG9.1。

启用后,任何错误都会在正常错误处理后终止整个后端会话,而不只是当前事务。它不同于 psql ON_ERROR_STOP 等客户端侧遇错停止行为,可能意外丢失会话状态、预备语句、临时对象以及应用连接。

它具有 user context,可用受控会话测试而无需改变全部连接。应与 restart_after_crash、事务错误处理、连接池重试、statement_timeout 和 idle_in_transaction_session_timeout 联合评估;终止服务器会话不能替代正确的事务恢复。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    根据故障模型与实际观测决定是否修改 exit_on_error;先做会话/测试环境验证,再按 context 安全部署并保留回滚值。

  • OLAP分析与批处理

    在长查询、批任务和峰值并发下单独验证,避免把 OLTP 经验直接套用到分析节点。

  • 小规格低配实例与开发机

    没有明确问题就保持默认;小规格环境更应避免以全局兼容性或故障策略换取微小收益。

常见问题

  • 把 exit_on_error 的启动默认值误当成当前有效值。
  • 忽略 user context 对生效时机的约束。
  • 一次改变多个联动参数,无法归因结果。
  • 未在真实故障或负载边界上验证就全局发布。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 9.1 ← 9.0 新增此参数

    PostgreSQL 9.1 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
9.1 off 会话 布尔
9.2 off 会话 布尔
9.3 off 会话 布尔
9.4 off 会话 布尔
9.5 off 会话 布尔
9.6 off 会话 布尔
10 off 会话 布尔
11 off 会话 布尔
12 off 会话 布尔
13 off 会话 布尔
14 off 会话 布尔
15 off 会话 布尔
16 off 会话 布尔
17 off 会话 布尔
18 off 会话 布尔
19 off 会话 布尔
20 沿用 off 会话 布尔

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Error Handling 错误处理 4 个
data_sync_retry 布尔 重启生效 off
设置数据文件同步失败后是否继续运行。 现存
exit_on_error 布尔 会话 off
发生任何错误后终止会话。 现存
recovery_init_sync_method 枚举 重载生效 fsync
设置崩溃恢复前同步数据目录的方法。 现存
restart_after_crash 布尔 重载生效 on
后端崩溃后重新初始化服务器。 现存