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

使用Prisma+Supabase执行db push时触发pgsodium_trg_mask_update权限错误

解决Prisma + Supabase执行prisma db push时的权限错误

问题根源

Supabase默认启用了pgsodium加密扩展,pgsodium_trg_mask_update是该扩展自带的事件触发器。你的数据库用户没有这个触发器的所有权,而prisma db push在同步Schema变更时会触碰到相关权限限制,导致报错。

可行解决方法

  • 方案一:临时调整触发器所有权(开发环境适用)
    登录Supabase控制台的SQL编辑器,执行以下SQL(替换your_db_user为Prisma连接用的数据库账号,通常是postgres):

    ALTER EVENT TRIGGER pgsodium_trg_mask_update OWNER TO your_db_user;
    

    执行完成后重新运行npx prisma db push即可。

  • 方案二:使用迁移命令替代db push(生产环境推荐)
    相比直接推送Schema变更,Prisma迁移更安全可控,且不易触发权限问题:

    1. 生成迁移文件:npx prisma migrate dev --name initial-setup(首次初始化用,后续变更直接运行npx prisma migrate dev)
    2. 部署到Supabase:npx prisma migrate deploy
  • 方案三:禁用pgsodium扩展(谨慎操作)
    如果你不需要Supabase的加密功能,可以在控制台的数据库设置中禁用pgsodium扩展,但这会影响依赖加密的功能,仅在确认无相关需求时使用。

额外注意

操作前的数据丢失警告是因为你的Schema变更会删除含非空值的列,务必确认业务允许该操作,或调整Schema逻辑避免删除必要数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:52:38