2012-04-23 16:35:07 PDTWARNING: nonstandard use of \\ in a string literal at character 117 2012-04-23 16:35:07 PDTHINT: Use the escape string syntax for backslashes, e.g., E'\\'.
答案 0 :(得分: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
是正确的。
答案 1 :(得分:1)
您应该使用包含未转义的反斜杠的值插入/更新,例如abc\def
,当您应该像abc\\def
那样将其转义时。
检查/调试输入数据以查找问题文本