在Windows上将Postgres从32位升级到64位版本

时间:2013-04-15 10:14:56

标签: postgresql upgrade 32bit-64bit

我找不到如何正确执行此操作的具体步骤。当我做一个简单的升级时,我收到一个错误:

Exception in thread "main" org.postgresql.util.PSQLException: ERROR: expected "]" to end datum, but got "80}"; length = 4
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)

1 个答案:

答案 0 :(得分:12)

一般程序是:

  • 使用32位版本的pg_dump转储数据库副本和pg_dumpall --globals-only以转储用户角色等。
  • 关闭并选择卸载32位版本 - 不需要实际删除数据库目录,但
  • 安装64位版本并启动它
  • 使用psql恢复全局转储,然后恢复数据库转储

(实际上,澄清一下 - 如果64位版本也是比你正在升级的32位版本更新的PostgreSQL版本,你应该先安装新版本,然后使用较新版本的pg_dump转储旧版本的数据库。以上仅适用于版本相同而您只是转换为64位的情况。

需要注意的另一点是,从32位升级到64位通常没什么意义。 PostgreSQL使用每进程模型,这意味着每个进程可以使用(2GB - shared_buffers)RAM来在32位Windows上运行。这对于大多数任务来说通常就足够了,因为即使在具有大量RAM的系统上也可以使shared_buffers保持相当小,并将其余的RAM用作操作系统磁盘缓存。如果你需要巨大的work_mem用于真正重要的个人查询,那么这只是一个问题。