Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将postgresql数据库复制到新服务器,错误为[无法识别的参数“行安全性”]_Postgresql - Fatal编程技术网

无法将postgresql数据库复制到新服务器,错误为[无法识别的参数“行安全性”]

无法将postgresql数据库复制到新服务器,错误为[无法识别的参数“行安全性”],postgresql,Postgresql,我是PostgreSQL的新手。我已经成功地创建了数据库,将“philipyoung”——我的ID设置为超级用户,并使用下面的命令将本地数据库复制到elephantsql中的新服务器 pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname 然后发生下面的错误 SET SET SET SET SET ERROR: unrecognized configuration parame

我是PostgreSQL的新手。我已经成功地创建了数据库,将“philipyoung”——我的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
如果您能提供任何帮助,我们将不胜感激。

出现“row_security”错误可能是因为您的本地PostgreSQL版本比远程版本更新。这不是问题,除非您正在使用该功能

“权限被拒绝”和“用户X不存在”错误是失败的原因。您正试图以没有权限在远程服务器上创建数据库的用户身份还原数据库。然后,它找不到相关的用户,然后您也没有将该用户设置为远程访问

用户在数据库之间共享,而不是与数据库一起复制

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

  • 以“postgres”身份登录远程服务器并“创建用户x…”
  • 将数据库还原为远程服务器上的用户“postgres”,它应该能够将所有权设置为所需的用户
  • 如果您不想授予对数据库的远程访问权限,则可能需要创建一个ssh隧道(internet上有很多示例)或转储到一个文件(使用“-Fc”表示自定义压缩格式)并首先将转储复制到远程计算机


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

    我也遇到过同样的问题。。数据库是Postgres9.4,我使用了9.5中的pgdump和psql。尝试导入转储文件时遇到很多问题。

    感谢您的解决方案,Richard!在本地版本上降级我的Postgre版本就可以了。在完全不同的上下文中,我使用免费的Heroku服务来了解真实场景中的RESTfulAPI。他们没有给我克隆本地数据库的权限,因为我正在使用免费计划。是否可以在线将所有表克隆到提供的数据库?谢谢恐怕我不是Heroku用户-您必须阅读他们的文档。假设你不能在Heroku端安装任何东西,你要么放弃远程端的所有数据并再次上传,要么编写你自己的差异生成脚本。确定它解决了问题,因为如果你导出(转储)客户端版本为9.5的数据库将在脚本中添加9.4不支持的标志/命令。