2

我找不到有关如何正确执行此操作的具体步骤。当我进行简单升级时,出现错误:

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)
4

1 回答 1

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用于非常大的个人查询,这只是一个问题。

于 2013-04-19T00:09:58.383 回答