【问题标题】:Error restoring postgres database backup恢复 postgres 数据库备份时出错
【发布时间】:2011-04-28 17:02:29
【问题描述】:

我已经设置了一个系统,可以从我的 Heroku 部署的 rails 应用程序中自动下载和存储数据库转储。一切都很好,但是当我下载转储并将其恢复到我的本地 postgres 服务器然后尝试从恢复的数据库运行我的本地应用程序时,我收到此错误

ActiveRecord::StatementInvalid in HomeController#index

PGError: ERROR:  permission denied for relation users : SELECT     "users".* FROM       "users"  WHERE     ("users"."id" = 1) LIMIT 1

有人对这可能是什么有任何建议吗?我检查了我的 postgres 权限,所有表和数据库本身都属于 postgres 用户。我也试过GRANT ALL,但没有成功。

【问题讨论】:

  • 您应该在问题中包含您用来进行恢复的命令。

标签: ruby-on-rails postgresql amazon-s3 heroku


【解决方案1】:

浏览您的 pgdump.sql 文件并删除每个 CREATE TABLE 语句后面的行,例如:

ALTER TABLE public.users OWNER TO eqrunyvndu;

然后从中运行您的还原,它应该可以工作。这些行将表的所有者更改为您的 heroku 应用程序的自动生成的数据库用户名,这在本地没有意义,因此您可以删除它们。

我还建议对该用户名的任何其他出现进行 greping 并将其删除。

【讨论】:

  • $ grep -v "OWNER TO" pgdump.sql > pgdump-local.sql
  • 嗯,我的转储文件中没有出现任何ALTER TABLE public.users OWNER TO eqrunyvndu;,甚至没有出现OWNER...
  • 听起来您的 Postgres 服务器设置有问题...您知道生成了 eqrunyvndu,对吗?您的应用会有所不同。
【解决方案2】:

您正在使用的 PostgreSQL 用户很可能与该表的所有者不同。 我想你在那个数据库和这个数据库上有不同的用户?

【讨论】:

  • 我的 postgres 服务器设置中只有一个用户:postgres。您的意思是我从中获取转储的数据库的用户有不同的用户吗?我不确定我是否在关注。
  • 您确定连接到正确的数据库吗?
  • 你在 postgresql 日志中有什么关于此权限被拒绝的信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多