无法将postgresql数据库复制到新服务器时出现错误[无法识别的参数" row_security"]

时间:2016-02-17 04:15:50

标签: postgresql

我是PostgreSQL的新手。我已经成功创建了数据库,设置了" philipyoung" -my ID作为超级用户,并使用下面的命令将本地数据库复制到elephantsql中的新服务器。

pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname

然后发生以下错误

SET
SET
SET
SET 
SET
ERROR: unrecognized configuration parameter "row_security"
ERROR: permission denied to create database
ERROR: role "philipyoung" does not exist
FATAL: no pg_hba.conf entry for host "xxx.xxx.xxx.xx", user "xxxx", database "xxxx", SSL on

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:8)

" row_security"错误可能是因为你在本地有一个比在远程端更新版本的PostgreSQL。除非您使用该功能,否则这不是问题。

"许可被拒绝"和"用户X不存在"错误是它失败的原因。您正在尝试将数据库还原为无权在远程服务器上创建数据库的用户。然后,它无法找到相关用户,然后您也无法设置该用户进行远程访问。

用户在数据库之间共享,不与他们一起复制。

所以 - 你想做类似的事情:

  1. 以" postgres"登录在远程服务器和"创建用户x ..."
  2. 以用户身份恢复数据库" postgres"在远程服务器上,它应该能够将所有权设置为您想要的用户。
  3. 如果您不想授予对数据库的远程访问权限,则可能需要创建ssh隧道(Internet上的大量示例)或转储到文件(使用" -Fc"自定义,压缩格式)并首先将转储复制到远程计算机。

    如果可能,尝试在两台服务器上运行相同版本的PostgreSQL。如果他们确实需要沟通,它会使事情变得更容易。

答案 1 :(得分:0)

我遇到了同样的问题。数据库是Postgres 9.4,我使用了9.5的pgdump和psql。尝试导入转储文件时遇到很多问题。 picture