PgAdmin III,打开服务器状态给出“编码UTF8的无效字节序列”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PgAdmin III,打开服务器状态给出“编码UTF8的无效字节序列”相关的知识,希望对你有一定的参考价值。
我在同步复制中有两个Postgres 9.3服务器。
我需要重新启动奴隶才能在archive_cleanup_command
中加载新的recovery.conf
。
服务器正确重启,现在与主服务器完全同步。
但是当我在PgAdmin III(可执行文件位于主服务器上)中打开从属服务器的“服务器状态”面板时,我收到一些错误,如下所示:
invalid byte sequence for encoding “UTF8”
加上一些十六进制代码
这可能是因为我在~
中放了一个波浪形的archive_cleanup_command
,但它没有用,然后我删除它并且命令正常工作。
也许~
已被写入某处并且它不是有效的char ...但我也删除了日志......
从服务器的日志有很多行,如下所示:
2015-02-13 11:11:32 CET ERROR: invalid byte sequence for encoding “UTF8”: 0xe8 0x20 0x73
2015-02-13 11:11:32 CET STATEMENT: SELECT pg_file_read('pg_log/postgresql-2015-02-13_111038.log', 0, 50000)
请注意,postgresql-2015-02-13_111038.log
是最后一个日志,我从中得到这些行。
您遇到的问题是区域设置lc_messages
设置为与数据库编码不同的编码。因此,使用Windows-1252编码将某些消息写入日志,而当您尝试使用PgAdmin查看日志时,它会尝试使用UTF-8解释该文件。在日志中写入的一些字节序列不是有效的UTF-8,导致错误。
实际上,postgresql中不同语言环境的交互方式可能会导致日志文件中出现混合编码。这上面有一个Bug Report,但它看起来并没有得到解决。
解决这个问题最简单的方法可能是将lc_messages
设置为English_United States.UTF-8
。
将lc_messages
与服务器上的所有数据库(或至少所有使用相同编码的数据库)对齐也是更可取的。
请务必删除任何现有的日志文件,因为它们已包含不正确的编码。
这是因为您的postgresql.log已损坏,如'select pf_file_read ....'语句中所述。
如果您在服务器日志上执行“触摸”(可能在备份日志之后),并重新连接,您将不再看到此unicode错误,因此,您将能够进一步使用pgadmin III。
以上是关于PgAdmin III,打开服务器状态给出“编码UTF8的无效字节序列”的主要内容,如果未能解决你的问题,请参考以下文章
如何在PostgreSQL / pgAdmin III中将bytea数据打印为十六进制字符串?