我找不到如何正确执行此操作的具体步骤。当我做一个简单的升级时,我收到一个错误:
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)
答案 0 :(得分:12)
一般程序是:
pg_dump
转储数据库副本和pg_dumpall --globals-only
以转储用户角色等。psql
恢复全局转储,然后恢复数据库转储(实际上,澄清一下 - 如果64位版本也是比你正在升级的32位版本更新的PostgreSQL版本,你应该先安装新版本,然后使用较新版本的pg_dump
转储旧版本的数据库。以上仅适用于版本相同而您只是转换为64位的情况。
需要注意的另一点是,从32位升级到64位通常没什么意义。 PostgreSQL使用每进程模型,这意味着每个进程可以使用(2GB - shared_buffers)RAM来在32位Windows上运行。这对于大多数任务来说通常就足够了,因为即使在具有大量RAM的系统上也可以使shared_buffers保持相当小,并将其余的RAM用作操作系统磁盘缓存。如果你需要巨大的work_mem
用于真正重要的个人查询,那么这只是一个问题。