首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >POSTGRESQL 9.1备份和恢复至8.4

POSTGRESQL 9.1备份和恢复至8.4
EN

Stack Overflow用户
提问于 2012-10-05 12:07:46
回答 2查看 6.7K关注 0票数 4

我正在尝试将我在本地开发的数据库上传到我们的开发服务器中。

我在我的机器上安装了PostgreSQL 9.1,开发服务器使用的是8.4。

当尝试使用9.1创建的转储文件将数据库恢复到8.4时,我得到错误:

代码语言:javascript
运行
复制
pg_restore: [archiver (db)] could not execute query: ERROR:  syntax error at or near "EXTENSION"
LINE 1: CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalo...

快速的研究告诉我,在9.1之前,“扩展”是不存在的。

我不确定我是否应该在pg_dump中寻找一个忽略“扩展名”的选项,因为我试图上传的数据库大部分数据都依赖于PostGIS扩展名。

虽然升级开发服务器并在开发服务器中安装PostGIS是一种选择,但我想知道一种不同的方法,在这种方法中,我不需要在服务器上编辑任何东西,同时维护我开发的数据库的功能。

当然,我们也欢迎其他变通方法,我将数据库上传到服务器的唯一目的是减少在需要为我们的团队部署某些东西时必须在项目上进行的重新配置量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-05 12:13:13

向后移植数据库可能是痛苦和困难的。

您可以尝试使用8.4的pg_dump转储它,但它可能会失败。

您可能希望从--schema-only转储文本文件中提取表和函数定义,手动将它们加载到旧的DB中,然后执行pg_dump --data-only并进行恢复以导入数据。

在那之后,如果你打算继续在你的机器上工作,安装PostgreSQL 8.4并使用它进行进一步的开发,这样你就不会引入更多的不兼容性,所以很容易移动转储。

在你的位置上,我只会将过时的目标服务器升级到9.1。

票数 3
EN

Stack Overflow用户

发布于 2013-12-13 16:23:03

这是一个旧帖子,但我今天也遇到了同样的问题,有一种更好、更可靠的方法可以将PG 9.1db加载到PG 8.4服务器中。Craig提出的方法在目标机器上将失败,因为不会创建PLPGSQL语言。

代码语言:javascript
运行
复制
pg_dump -Upostgres -hlocalhost > 9.1.db

替换此行

代码语言:javascript
运行
复制
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;

用这一行

代码语言:javascript
运行
复制
CREATE LANGUAGE plpgsql;

删除此行或将其注释掉

代码语言:javascript
运行
复制
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

您可以使用sed进行更改

通常,由于应用程序依赖关系,升级8.4服务器是不可能的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12739326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档