我计划更新当前在 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:什么标签适合向后兼容问题?
答案1
如果你谈论的是一般的客户端,那么 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
将反斜杠命令恢复正常。