Heroku Postgres备份恢复失败,求导入修改后SQL文件的方法
解决Heroku Postgres备份恢复的扩展Schema问题
直接导入修改后的SQL文件
你不需要把SQL转回dump文件,用正确的heroku pg:psql命令即可导入:
- 确保本地已安装PostgreSQL客户端(包含
psql工具) - 执行以下命令导入:
heroku pg:psql --app <你的应用名称> -f <修改后的SQL文件路径>
注意:之前的错误是因为缺少
-f参数,该参数用于指定要导入的SQL文件路径。
如果仍有报错,检查并处理SQL文件中的COMMENT ON EXTENSION语句:
- 若扩展已迁移到
heroku_extschema,需确保注释语句指向正确的扩展(比如COMMENT ON EXTENSION heroku_ext.pg_stat_statements ...) - 也可暂时注释掉所有
COMMENT ON EXTENSION语句,导入完成后再手动添加。
重新生成dump文件再恢复(可选)
如果偏好使用dump文件恢复,可按以下步骤操作:
- 本地创建临时数据库并加载修改后的SQL:
# 创建临时库 createdb temp_heroku_db # 导入修改后的SQL psql -d temp_heroku_db -f <修改后的SQL文件路径>
- 生成符合Heroku格式的dump文件:
pg_dump -Fc temp_heroku_db -o fixed_backup.dump
-Fc参数指定生成自定义格式的dump,与Heroku原生备份格式一致。
- 恢复到Heroku Postgres:
heroku pg:restore --app <你的应用名称> fixed_backup.dump
- 清理本地临时数据库:
dropdb temp_heroku_db
额外注意事项
- 确保所有
CREATE EXTENSION语句的schema都改为heroku_ext,包括postgis等其他扩展 - 若遇到权限或schema不存在的报错,先手动创建
heroku_extschema:
heroku pg:psql --app <你的应用名称> -c "CREATE SCHEMA IF NOT EXISTS heroku_ext;"
内容的提问来源于stack exchange,提问作者user18904391
相关产品推荐
相关产品推荐

