postgresql 9.1和8.3系列共存产生的问题

主力服务器升级到最新版本的ubuntu后,postgresql变为9.1版本,而另外还有一台服务器还没有升级,还是默认的8.3版本,同时9.1版本的postgresql中默认还有一个视图是通过dblink连接到8.3版本的postgresql上的,结果这几天发生了很奇怪的问题,即在这个视图上有个字符串字段,里面包括了一些Windows硬盘的目录信息,如:D:\ftphome等,而升级后发现这个目录信息会变为:D:\x0c之类的信息。

经检查,是postgresql在升级到9.1后,有一项特性发生了改变:即\不再作为默认转义符号了,除非你使用E前缀声明指定。而8.3版本和9.1版本二者的默认方法不同,导致了在9.1的视图中产生的正确结果到8.3版本的库里发生了变化,而导致信息不正确。

解决方法也很简单,修改8.3版本的postgresql.conf文件:

standard_conforming_strings=on

发表评论

电子邮件地址不会被公开。 必填项已用*标注