我正在计划更新系统,该系统当前与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
将反斜杠命令恢复正常。