今天在做数据库迁移时发现有张表的数据不对,这张表有个 bytea 字段,迁移后显示的内容不对,源库是 8.4.3 版本目标库是9.0.3 版本, 一时找不到原因,后来在德哥的指导下,只要在目标库设置一个 bytea_output
参数就行,例如可以在导入脚本里加上 set bytea_output = 'escape'
。
表结构
1 |
cmp=> /d tbl_temp |
PostgreSQL 9.0 手册介绍
bytea_output (enum)
Sets the output format for values of type bytea. Valid values are hex (the default) and escape (the traditional PostgreSQL format). See Section 8.4 for more information. The bytea type always accepts both formats on input, regardless of this setting.
原因很明显了,由于在PostgreSQL老版本里(8.4以前) bytea_output 参数默认为 “escape” , 而 PostgreSQL 9.0 的这个参数被默认设置成了 “hex” ,所以在导入到 PostgreSQL9 版本里,bytea字段内容就不对了。在数据导完后,建议将 $PGDATA/postgresql.conf
的这个参数也改下,设置成 “escape” , 不然那个字段应用显示依然会有问题。
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/236391.html