如果服务器是 8.x,我应该构建什么 postgresql 客户端版本?

Ben*_*igt 3 postgresql upgrade

我计划更新当前在 Windows 上运行 8.x 服务器、在 Windows 上运行 8.x 客户端以及在 Linux 上运行 8.x 客户端的系统。显然,在混合环境中这似乎是一个糟糕的平台选择,但 Linux 机器没有持久可写存储(作为反 rootkit 措施)。我现在担心版本之间的兼容性。

Linux postgresql 9.0.x 客户端可以连接到 Windows 8.x 服务器吗?服务器正在使用一些第三方二进制扩展,因此升级它是一项更复杂的任务,将在稍后完成。

如果不鼓励将 9.0.x 客户端和 8.x 服务器结合起来,那么如果我先升级服务器,最新的 8.x 客户端是否能够继续连接?

META:什么标签适合向后兼容性问题?

Der*_*rfK 5

如果你谈论的是一般的客户端,postgresql的客户端通信协议是稳定的,并且根据手册,自postgresql 7.4(协议版本3.0)以来没有改变。因此,从此以后任何客户端都可以与任何服务器进行通信。此外,libpq 显然可以连接到协议 2.0服务器

如果您谈论的是psql命令行客户端,它可以连接到旧服务器(它使用 libpq),但反斜杠命令(例如\d tablename)查询数据库的pg_catalog表以返回您正在查找的信息。根据psql 的文档,客户端知道如何\d在数据库的先前版本上执行命令,但如果它们使用的目录模式已更改,其他命令可能会也可能不会工作。(这些\d命令几乎是所有命令,因此您应该不会有任何问题。)

顺便说一句,\set ECHO_HIDDEN当您使用反斜杠命令时,您可以查看 psql 到底在做什么。\unset ECHO_HIDDEN使反斜杠命令恢复正常。