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

Heroku数据库从备份恢复失败求助:扩展创建报错

解决Heroku数据库恢复时扩展创建失败的问题

方法一:修改备份文件后重新恢复

  • 下载目标备份到本地:
    heroku pg:backups:download b101 --app example-app
    
  • 导出备份的schema部分到SQL文件:
    pg_restore --schema-only --verbose latest.dump > schema.sql
    
  • 编辑schema.sql,找到所有创建扩展的语句,将WITH SCHEMA public替换为WITH SCHEMA heroku_ext。比如把:
    CREATE EXTENSION IF NOT EXISTS "hstore" WITH SCHEMA public;
    
    修改为:
    CREATE EXTENSION IF NOT EXISTS "hstore" WITH SCHEMA heroku_ext;
    
  • 本地生成适配后的新备份:
    # 创建临时数据库
    createdb temp_db
    # 导入修改后的schema
    psql temp_db -f schema.sql
    # 导出为新的dump文件
    pg_dump temp_db -Fc -o new_backup.dump
    
  • 上传新备份到Heroku并恢复:
    heroku pg:backups:restore new_backup.dump DATABASE_URL --app example-app
    

方法二:跳过扩展恢复,手动创建

  • 恢复备份时排除扩展相关内容:
    heroku pg:backups:restore b101 DATABASE_URL --app example-app --exclude-table-data=pg_catalog.pg_extension
    
  • 登录Heroku PostgreSQL控制台手动创建扩展:
    heroku pg:psql --app example-app
    
    在交互界面执行:
    CREATE EXTENSION IF NOT EXISTS "hstore" WITH SCHEMA heroku_ext;
    CREATE EXTENSION IF NOT EXISTS "pg_stat_statements" WITH SCHEMA heroku_ext;
    

方法三:尝试参数适配恢复

直接添加--no-owner和--no-acl参数执行恢复,部分场景下Heroku会自动调整扩展的创建路径:

heroku pg:backups:restore b101 DATABASE_URL --app example-app --no-owner --no-acl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:54:29