postgresql - 我遇到无效的 UTF8 字节序列问题

标签 postgresql encoding utf-8 ascii

我正在尝试将 POSTGRESQL 数据库从一台服务器移动到另一台服务器。为此,我执行了 pg_dump,然后在新服务器上创建新数据库后,我尝试恢复 pg_dumped 文件。在大多数情况下,恢复没问题,但是一张表没有复制过来。

pg_restore: [archiver (db)] COPY failed: ERROR:  invalid byte sequence for encoding "UTF8": 0x92
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

现在,在检查数据库属性后,原来原来的表是用 SQL_ASC2 编码的,但我创建的新表是 UTF8。 我对编码一无所知,但 UTF8 不向后兼容 ASC2 吗?那么,为什么会出现无效的字节序列呢?

将新数据库更改为使用 SQL_ASC2 的数据库是否可以解决此问题? 如果我必须更改新数据库的编码,我该怎么做?我可以只更改它,还是必须从头开始并重新制作整个数据库?

感谢您的帮助!

最佳答案

在连接到数据库之前,您可以将 client_encoding 设置为“LATIN9”(它可能是什么;无论如何:它将被接受)您可以通过以下方式做到这一点:

1) 发布带有 -f my_filename 标志的 pg_restore。

2) 编辑生成的文件(顶部附近可能已经有“SET client_encoding = 'UTF8';”。)

3) 使用“psql -U username dbname < filename”提交。 (在大多数情况下,您必须提供不同的用户名或数据库名称;“\connect newdbname”位于脚本的顶部并将接管。有时您甚至需要先创建一个用户)

关于postgresql - 我遇到无效的 UTF8 字节序列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433726/

相关文章:

Python 没有读取有效的 JSON

python - 如何存储非英文文本?

c++ - 旧 MFC 项目上的 UTF-8 转换为较新的 MFC

sql - 如何在 Windows 上的 PostgreSQL 中使用 UTF-8 排序规则创建数据库?

postgresql - 如何将 Postgres 外键模拟到分区表中

c# - 数据库中存储的字符串的编码问题

python - Mac 中 Django 的 GDAL 配置 GDAL_LIBRARY_PATH 异常

C++11 和 Win32 wchar_t

PostgreSQL fatal error : role “username” does not exist

node.js - 使用 Sequelize 改变 postgreSQL 数据库中的序列