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

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

文档 / 配置参数 / 版本和平台兼容性

CONFIGURATION PARAMETER版本和平台兼容性 / 以前的 PostgreSQL 版本

standard_conforming_strings

使普通单引号字符串中的反斜杠按字面处理。

Nonstandard strings are no longer supported; this can only be true.

布尔 会话 引入 9.0(基线) 现存至 20 devel 1 次默认值变更

类型
布尔bool
上下文
会话任何用户都可在会话内用 SET 修改
默认值
on
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

off 9.0 on 9.1 – 20

默认值一共换过 2 档,每段的宽度按它覆盖的大版本数伸展,深色的一段是当前查看的 PostgreSQL 18。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.13 版本和平台兼容性 本站手册 官方原文

控制普通字符串文本('...')是否按照 SQL 标准把反斜线当普通文本。从PostgreSQL 9.1 开始,默认值为on(之前的发行中默认值为off)。应用可以检查这个参数来判断字符串文本如何被处理。这个参数的存在也可以被当做转义字符串语法(E'...')被支持的标志。如果一个应用希望反斜线被当做转义字符,应该使用转义字符串语法(Section 4.1.2.2)。

机制详解

使普通单引号字符串中的反斜杠按字面处理。它可在会话级修改,因此不同会话可能采用不同的行为。

该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。

应把 standard_conforming_strings 与 array_nulls、backslash_quote、escape_string_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。

调优建议

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

  • OLTP在线事务处理

    保持现代默认并修复依赖 standard_conforming_strings 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。

  • OLAP分析与批处理

    重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。

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

    没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。

常见问题

  • 把兼容开关当作永久方案而不修复客户端。
  • 只在一个会话测试,却全局部署到所有应用。
  • 混淆解析兼容性与数据或安全兼容性。
  • 升级后忘记清理已经不需要的覆盖。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 19 ← 18 仅描述更新

    简述 Causes '...' strings to treat backslashes literally. Nonstandard strings are no longer supported; this can only be true.

  3. PostgreSQL 9.1 ← 9.0 默认值变更

    默认值 off on

逐版本快照

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

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

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Version and Platform Compatibility 版本和平台兼容性 10 个
以前的 PostgreSQL 版本 10
array_nulls 布尔 会话 on
允许在数组输入中使用 NULL 元素。 现存
backslash_quote 枚举 会话 safe_encoding
设置字符串字面量中是否允许使用反斜杠转义的单引号(\')。 现存
default_with_oids 布尔 会话 off
默认创建带 OID 的新表。 于 12 移除
escape_string_warning 布尔 会话 on
当普通字符串字面量含反斜杠转义时发出警告。 于 19 移除
lo_compat_privileges 布尔 会话(超级用户) off
启用大对象权限检查的向后兼容模式。 现存
operator_precedence_warning 布尔 会话 off
对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。 于 14 移除
quote_all_identifiers 布尔 会话 off
生成 SQL 片段时引用所有标识符。 现存
sql_inheritance 布尔 会话 on
让多种 SQL 命令默认包含继承子表。 于 10 移除
standard_conforming_strings 布尔 会话 on 9.11 次
使普通单引号字符串中的反斜杠按字面处理。 现存
synchronize_seqscans 布尔 会话 on
启用同步顺序扫描。 现存