POSTGRESQL 9.1备份并恢复到8.4

Cid*_*ula 4 postgresql backup restore backwards-compatibility

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

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

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

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...
Run Code Online (Sandbox Code Playgroud)

并且快速研究告诉我在9.1之前不存在"扩展".

我不确定我应该在pg_dump中寻找一个忽略"扩展"的选项,因为我试图上传的数据库依赖于大多数数据的PostGIS扩展.

虽然升级开发服务器并在开发服务器中安装PostGIS是一个选项,但我想知道一个不同的路由,其中​​我不需要在服务器上编辑任何内容,同时保持我开发的数据库的功能.

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

Dan*_*man 7

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

pg_dump -Upostgres -hlocalhost > 9.1.db
Run Code Online (Sandbox Code Playgroud)

替换这一行

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
Run Code Online (Sandbox Code Playgroud)

用这条线

CREATE LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

删除此行或将其注释掉

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
Run Code Online (Sandbox Code Playgroud)

你可以使用sed进行更改

由于应用程序依赖性,通常无法升级8.4服务器.