SQL:解决PostgreSQL数据库传输出现ERROR: invalid byte sequence for encoding “UTF8“: 0xe5 0x9b 0x20
发布日期:2021-06-30 15:42:05 浏览次数:3 分类:技术文章

本文共 835 字,大约阅读时间需要 2 分钟。

在项目中,使用PostgreSQL数据库存储数据,由于客户需求,需要新建一个几乎相同项目,需要新建项目、数据库后更改少量功能。而使用导出数据库/导入数据库功能拷贝数据表到新数据库时出现了以下错误:

ERROR: invalid byte sequence for encoding “UTF8”: 0xe5 0x9b 0x20
在这里插入图片描述
百度后,得出的结论是:
invalid byte sequence for encoding “UTF8”: 0x00(注意:若不是0x00则很可能是字符集设置有误),是PostgreSQL独有的错误信息,直接原因是varchar型的字段或变量不接受含有’\0’(也即数值0x00、UTF编码’\u0000’)的字符串 。官方给出的解决方法:事先去掉字符串中的’\0’。
这是PostgreSQL特有的错误,官方也给出了解决方案,如果数据不多,显然是可行的。可是项目牵扯到的数据太多,这并不是一个好的方法。
找了很多方案,最后解决了问题,流程是先在新数据库中用语句构造表结构、字段相同的数据表,然后使用Navicat数据同步功能将两个数据表内容进行同步

1.打开pgAdmin,找到原数据库的构造语句。

在这里插入图片描述
2.到新的数据库中,新建查询语句粘贴后并运行。
我是使用的Navicat进行的操作,因为pgAdmin实在太慢了= =
在这里插入图片描述
运行后,可能会出现relation “a_trend_id_seq” does not exist错误。这是因为图中绿色部分语句造成的。这句话是pgsql中序列函数,构造自增id。
解决方法是把这一句更换为serial,如图
在这里插入图片描述
即可创建成功。
3.点击Navicat菜单栏中的工具,使用数据同步功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
部署完成后即把源数据库中数据表拷贝到的新的数据库。

我用这个方法解决了我的问题,但是不确定适用于所有项目。因为我用一些其他的方法尝试过并没有解决我的问题,如果各位有更加便捷或能解决问题的方法,欢迎分享一下,万分感谢!

转载地址:https://kaisarh.blog.csdn.net/article/details/102855464 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:实战Python:利用Python和PyQt5实现瑞幸咖啡点餐系统
下一篇:爬虫:Python爬虫学习笔记之爬虫基础

发表评论

最新留言

很好
[***.229.124.182]2024年04月28日 06时16分10秒