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

我正在计划更新系统,该系统当前与Windows上的8.x服务器,Windows上的8.x客户端以及Linux上的8.x客户端一起运行。 很明显,这似乎是混合环境中不好的平台select,但是Linux机器没有永久的可写存储(作为反rootkit措施)。 我现在关心版本之间的兼容性。

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

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

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

如果您一般在谈论客户端,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将反斜杠命令恢复正常。