我一直在尝试导入postgres转储(使用psql dbname < dump.sql
及其变体,指定主机名和用户名等),但到目前为止我还没有成功。
我是Postgres的新手,所以我可能在这里错过了明显的东西。根据导入命令的输出,扩展plpgsql可能不存在。我是否希望在导入之前设置plpgsql扩展名?
以下是输出的前几行:
SET
ERROR: unrecognized configuration parameter "lock_timeout"
SET
SET
SET
SET
CREATE EXTENSION
ERROR: must be owner of extension plpgsql
ERROR: could not open extension control file "/usr/share/postgresql/9.1/extension/hstore.control": No such file or directory
ERROR: extension "hstore" does not exist
SET
SET
SET
ERROR: relation "active_admin_comments" already exists
ERROR: role "finalstep" does not exist
ERROR: relation "active_admin_comments_id_seq" already exists
ERROR: role "finalstep" does not exist
ALTER SEQUENCE
ERROR: relation "admin_users" already exists
ERROR: role "finalstep" does not exist
稍后,看起来它正在尝试执行一些内容作为sql查询(内容包含mathml标签):
ERROR: syntax error at or near "</"
LINE 1: </mo> <msqrt>
^
ERROR: syntax error at or near "&"
LINE 1:
^
ERROR: syntax error at or near "</"
LINE 1: </mi> <mi>α
任何指针?我的Postgres版本是9.1(最初是9.3,但在看到错误消息后我将其降级为9.1)。
答案 0 :(得分:3)
没有文件本身很难说。一些指示:
如果可能的话,我会坚持使用版本 9.3 。许多改进超过9.1,您需要更多时间才能再次升级。
此外,第一条错误消息表明您需要 Postgres 9.3无论如何,因为GUC(配置设置)lock_timeout
was introduced with Postgres 9.3.
使用psql
with the -f
switch获取更详细的错误消息:
psql dbname -f dump.sql
(-
前面没有dbname
: ,我认为这只是一个错字?)-dbname
如果您的安装没有中断,语言 plpgsql
应该不是问题。
Per documentation:
在PostgreSQL 9.0及更高版本中,默认安装PL / pgSQL。
这些错误消息表示在操作系统级别从contrib包中读取文件时出现问题。
ERROR: must be owner of extension plpgsql ERROR: could not open extension control file "/usr/share/postgresql/9.1/extension/hstore.control": No such file or directory ERROR: extension "hstore" does not exist
您需要为postgresql-contrib-9.1
等其他模块安装可选包postgresql-contrib-9.3
(或hstore
)。这个相关答案的细节:
Error when creating unaccent extension on PostgreSQL
启动Postgres的系统用户必须可以访问这些文件,通常是postgres
(操作系统用户)。即,在shell中输入whoami
时,答案应为postgres
。
postgres
(数据库用户)。通常,如果未指定用户名,并且启用了IDENT
或PEER
身份验证(默认),则会自动使用与OS用户匹配的数据库用户。这个相关答案的细节: