Heroku 上的 pg_largeobject 访问

2023-12-29

我正在尝试清理 Heroku 上的 postgres 数据库,其中一些大型对象已经失去控制,我想删除不再使用的大型对象。

在我的开发机器上,我可以执行以下操作:

select distinct loid from pg_largeobject 
Where loid Not In (select id from table )

然后我跑:

SELECT lo_unlink(loid)

在每个 ID 上。

但在heroku上,我无法运行任何选择pg_largeobject,甚至

select * from pg_largeobject limit 1;

给我一个错误:

ERROR:  permission denied for relation pg_largeobject

任何关于如何解决这个问题的建议,或者实际上为什么我们没有读取权限pg_largeobject在赫罗库?


从 PostgreSQL 9.0 开始,非超级用户无法访问pg_largeobject。这在发行说明中有记录:

添加控制大对象 (BLOB) 权限的功能 授予/撤销(KaiGai Kohei)

以前,任何数据库用户都可以读取或修改任何大型对象。 现在可以按大数据授予和撤销读取和写入权限 对象,并跟踪大对象的所有权。

如果它适用于您的开发实例,则可能是因为它的版本8.4或更低,或者因为您以超级用户身份登录。

如果您无法以超级用户身份登录 heroku,我想您可以使用以下命令转储远程数据库pg_dump,然后在本地重新加载它,将泄漏的 OID 识别为本地超级用户,将它们放入带有以下命令的脚本中:lo_unlink命令,最后针对 heroku 实例运行此脚本。

Update:

基于psql如何\dl命令查询数据库,看来pg_catalog.pg_largeobject_metadata可用于通过以下查询检索所有大对象的 OID 和所有权:

SELECT oid as "ID",
  pg_catalog.pg_get_userbyid(lomowner) as "Owner",
  pg_catalog.obj_description(oid, 'pg_largeobject') as "Description"
  FROM pg_catalog.pg_largeobject_metadata   ORDER BY oid

因此,对于 9.0+ 的非超级用户,您发现泄漏大对象的初始查询可以更改为:

select oid from pg_largeobject_metadata
 Where oid Not In (select id from table )

如有必要,可提出一个条件lomowner可以添加以过滤特定用户拥有的大型对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku 上的 pg_largeobject 访问 的相关文章

随机推荐

  • Mandelbrot 集渲染的平滑频谱

    我目前正在编写一个程序来生成非常巨大的 65536x65536 像素及以上 Mandelbrot 图像 我想设计一个光谱和着色方案来使它们公正 这维基百科精选曼德尔布罗图像 http en wikipedia org wiki File M
  • 最有效的多重纹理方法 - iOS、OpenGL ES2、优化

    我正在尝试找到在 iOS 上处理 OpenGL ES2 中多重纹理的最有效方法 我所说的 高效 是指即使在较旧的 iOS 设备 iPhone 4 及更高版本 上也能实现最快的渲染 但同时还要平衡便利性 我考虑过 并尝试过 几种不同的方法 但
  • 单个 Logger 的每个附加程序的日志级别

    是否可以根据appender为单个Logger配置不同的日志级别 我意识到这与此类似question https stackoverflow com questions 1839647 how to configure log4j to l
  • 何时在 Spring 中使用自动装配

    我正在看书专业春季3 https rads stackoverflow com amzn click com 1430241071 其中有一段确实让我很困惑 该段落是关于 Spring 中的自动装配 以下是摘录 在大多数情况下 是否应该使用
  • 合成器外观和感觉中的默认按钮输入映射?

    我正在尝试使用 UIManager 获取并清除一些默认键绑定 以便空格键不会激活我的 JButtons 如所解释的here https stackoverflow com questions 12133795 removing defaul
  • strtok()函数的实现

    我需要编写我的函数 strtok 下面是我的代码 问题是 我无法显示结果字符串 在我使用的代码中strcpy 然后显示新数组 是否可以仅使用指针显示字符串 str include
  • 使用 Spring DispatcherServlet 自定义 404

    我已设置 web xml 如下 我还有一个基于注释的控制器 它接受任何 URL 模式 然后转到相应的 jsp 我已在 servlet xml 中进行了设置 但是 如果我转到以 html 结尾的页面 并且其 jsp 不存在 我不会看到自定义
  • Selenium 访问框架内的元素时出现问题

    我在验证由框架集和框架组成的页面中的元素时遇到问题 我正在使用代码 selenium selectFrame relative up selenium selectFrame topFrame 但它失败并出现错误 未找到元素 topFram
  • J2ME 支持 HTTP PUT 吗?

    我刚刚注意到 MIDP 2 0 API 中的一个奇怪的事情 HttpConnection 类 apidocs 明确引用了方法 GET POST 和 HEAD 但没有其他方法 这是否意味着它们不受支持 http java sun com ja
  • 如何在 powershell 中列出所有已安装、可运行的 cmdlet?

    我想列出 powershell 中所有已安装 可运行的 cmdlet 和函数 但是Get Command正在列出以某种方式 存在 但未加载且不可运行的 cmdlet 举个例子 Get Command lists New IseSnippet
  • 使用 Gmail Python 发送电子邮件

    我正在尝试发送电子邮件 但遇到此错误 smtplib SMTPAuthenticationError 534 b 5 7 9 Application specific password required Learn more at n5 7
  • 为什么刷新页面时 localStorage 条目会重置?

    我正在为我的班级制作一个猜谜游戏 我们应该实现一个本地存储的记分系统 我以为我理解了这个概念 但它并没有按照我想要的方式工作 当我玩游戏时 这些值存储在本地存储中 但是当我刷新时 这些值会重置 任何见解都会很棒 下面是我的脚本的开头 下面是
  • 如何在异步可运行返回值后 JUnit 测试 Android LiveData 值

    我使用 MVVM 模式 Android 生命周期组件和 LiveData 创建了一个示例登录屏幕应用程序 在存储库上 我使用延迟处理程序模拟了一些任务 如何使用处理程序测试 ViewModel 和存储库方法 由于它是异步过程 如何在可运行返
  • 自动运行脚本以运行线性回归 R

    我希望在下面的数据帧上运行线性回归 test lt data frame abc c 2 4 3 2 8 9 9 8 10 0 3 2 5 4 city1 0 c 5 3 2 6 3 5 4 7 8 4 4 5 5 city1 1 c 2
  • PyQt 类不适用于第二次使用

    我正在使用 PyQt 完全加载页面 包括 JS 并使用 Beautiful Soup 获取其内容 第一次迭代时工作正常 但之后就崩溃了 我对 Python 的了解不多 对 PyQt 的了解更少 所以非常欢迎任何帮助 借用的类here htt
  • 将字符串转换为元组而不拆分字符

    我正在努力将字符串转换为元组 而无需在此过程中拆分字符串的字符 有人可以建议一个简单的方法来做到这一点 需要一个内衬 Fails a Quattro TT print tuple a Works a Quattro TT print tup
  • 如何确定套接字listen() backlog参数的值?

    我应该如何确定侦听套接字的积压参数使用什么 简单地指定一个非常大的数字会有问题吗 这个问题的答案很长Winsock 程序员常见问题解答 http tangentsoft net wskfaq advanced html backlog 它详
  • 我必须在 django 类视图中包含authentication_classes 属性吗

    根据 Django Rest Framework 当您想要指定要使用的身份验证时 您可以在设置文件中将其设置为全局 例如 REST FRAMEWORK DEFAULT AUTHENTICATION CLASSES rest framewor
  • 变量未定义编译器错误

    我是 Excel 的长期狂热用户 但刚刚开始学习 VBA 我正在使用以下代码 但当我尝试运行时出现错误Sub test 编译错误 变量未定义 你能帮我找出问题所在吗 Option Explicit Function toFarenheit
  • Heroku 上的 pg_largeobject 访问

    我正在尝试清理 Heroku 上的 postgres 数据库 其中一些大型对象已经失去控制 我想删除不再使用的大型对象 在我的开发机器上 我可以执行以下操作 select distinct loid from pg largeobject