You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Metabase升级遇Postgres权限错误:需加角色执行迁移

解决Heroku上Metabase升级时permission denied for relation databasechangelog错误

这问题我之前帮好几个开发者搞定过——本质就是Metabase升级时,用来执行数据库结构变更的Liquibase工具没法访问它用来记录变更历史的databasechangelog表,核心原因是当前数据库用户没有足够的读写权限。

下面是一步步的解决步骤:

1. 连接到Heroku的Postgres数据库

打开终端,用Heroku CLI连接到你的应用数据库:

heroku pg:psql -a 你的应用名称

把你的应用名称替换成你在Heroku上的Metabase应用名。

2. 赋予数据库用户对应权限

进入psql命令行后,先确认当前的数据库用户:

SELECT current_user;

复制返回的用户名,然后执行以下命令赋予权限(把你的数据库用户名替换成刚才查到的内容):

-- 给变更日志表和锁表赋予全权限
GRANT ALL PRIVILEGES ON TABLE databasechangelog TO 你的数据库用户名;
GRANT ALL PRIVILEGES ON TABLE databasechangeloglock TO 你的数据库用户名;

-- 如果上面的还不够,可以给整个public schema赋予权限(更彻底)
GRANT ALL PRIVILEGES ON SCHEMA public TO 你的数据库用户名;

执行完后输入\q退出psql。

3. 重启Metabase应用

最后重启你的Heroku应用,让权限变更生效:

heroku restart -a 你的应用名称

为什么会出现这个问题?

Metabase每次升级都会用Liquibase来同步数据库结构,databasechangelog和databasechangeloglock是Liquibase的核心表,用来跟踪所有变更记录和防止并发变更。可能的触发原因包括:

  • 之前手动修改过数据库的权限配置
  • Heroku的Postgres实例在维护或升级过程中重置了部分权限
  • 你使用了非默认的数据库用户来运行Metabase

如果执行完这些步骤还是报错,建议重新查看应用日志,确认是否有其他更具体的权限相关提示,或者检查DATABASE_URL环境变量是否指向了正确的数据库实例。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:37:57