我的Postgres日志提供了大量的这些错误。而且我不知道什么是使用包含转义反斜杠,如abc\def
,当你要逃避它这样abc\\def
值发生
问题描述:
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'\\'.
答
在最近的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
是正确的。
答
你插入/更新。
检查/调试输入数据发现问题文本
感谢波希米亚。我正在使用rss提要将数据插入到我的数据库中,所以我不确定数据会是什么样的。我们能否拥有能够自动逃脱这些角色的东西? – trackpopular 2012-04-24 00:22:52
如果你使用java,JDBC会自动为你做。其他语言,我不知道。你也可以使用像grep这样的命令行工具来扫描反斜杠,并且你可以直观地检查它们等等 – Bohemian 2012-04-24 00:45:32