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

Zor*_*ski 2 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)
Run Code Online (Sandbox Code Playgroud)

Cra*_*ger 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的个人查询,这只是一个问题.