Active Record出现PG::InsufficientPrivilege错误:当用户没有权限时发生该错误

4
我们正在使用Gem PaperTrail,在postgres中有一张名为xxx.versions的表。
通过本地rails控制台,我们尝试通过PaperTrail对象查询数据库:
PaperTrail::Version.first

PG :: InsufficientPrivilege:ERROR:没有版本关系的权限 :SELECT“versions”。* FROM“versions”ORDER BY“versions”。“id”ASC LIMIT 1

但是如果我像这样访问表:
ActiveRecord::Base.connection.execute("SELECT * FROM xxx.versions limit 1")

返回一个记录集。

这只会发生当我们尝试从本地机器连接到数据库时。

如果我在 QA 服务器上的 Rails 控制台中运行 PaperTrail::Version.first,它可以正常连接。

其他故障排除细节:

  • 我已经使用了与 QA 服务器相同的凭据并收到了相同的结果。
  • 在我的本地机器上,在 Rails 项目之外,我可以通过 DataGrip/pgadmin 查询数据库。

查看 PostgreSQL 日志并查看实际发生了什么。 - Laurenz Albe
1
@LaurenzAlbe 我们也尝试过这样做,但即使我们将其提升到debug_5级别,它看起来仍然与我们通过rails日志看到的错误非常相似。 - Anthony
1个回答

3

有几种可能性:

  • 您在两次尝试中使用了不同的PostgreSQL用户或数据库。

  • search_path上,在xxx之前的另一个模式中有一个不同的关系versions


第一个不太可能,我们在应用程序中只使用一个database.yml,并且每个环境只有一个连接。第二个我没有想到...我会研究一下。 - Anthony
这是第二个!我们在搜索路径中有另一个模式与相同的表名! - Anthony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接