2012-04-23 16:35:07 PDTWARNING:在字符 117 处的字符串文字中非标准使用 \\ 2012-04-23 16:35:07 PDTHINT:对反斜杠使用转义字符串语法,例如 E'\\'。
问问题
195 次
2 回答
2
在最近的 PostgreSQL 中,字符串应该符合标准,这意味着默认情况下没有转义。有一些设置可以控制这一点:
standard_conforming_strings
-- 自 9.1 起默认开启。escape_string_warning
-- 也默认开启。
这意味着像这样的字符串文字'a\nb'
被解析为 4 个简单字符。如果您希望使用转义符对其进行解析,则可以使用一种语法E'a\nb'
将其解析为 3 个预期字符。有关正确解释,请参阅http://www.postgresql.org/docs/current/interactive/runtime-config-compatible.html。
我怀疑(如果您运行的是 PostgreSQL 9.1 或更高版本),您可能standard_conforming_strings = off
- 可能让使用转义编写的遗留查询正确运行。但是,该警告仍处于启用状态,因为它警告您正在使用已弃用的语法。
E
如果您想摆脱警告,正确的解决方案是修复所有查询以使用前缀。当然假设转义是故意的——如果不是,那么设置standard_conforming_strings = on
是正确的。
于 2012-04-23T23:58:59.443 回答
1
您正在使用包含未转义反斜杠的值插入/更新,例如abc\def
,当您应该像这样对其进行转义时abc\\def
。
检查/调试您的输入数据以找到问题文本
于 2012-04-23T23:46:44.047 回答