pg_restore:错误:无法执行查询:错误:扩展“pg_stat_statements”必须安装在架构“heroku_ext”中

use*_*391 6 postgresql heroku heroku-postgres

由于heroku 的这一更改,我无法恢复我的 Heroku Postgres 备份。

恢复时抛出以下错误:

pg_restore:错误:无法执行查询:错误:扩展“pg_stat_statements”必须安装在模式“heroku_ext”中命令是:CREATE EXTENSION IF NOT EXISTS“pg_stat_statements”WITH SCHEMA“public”;pg_restore:错误:无法执行查询:错误:扩展“pg_stat_statements”不存在命令是:COMMENT ON EXTENSION“pg_stat_statements”IS“跟踪所有已执行SQL语句的计划和执行统计信息”;命令是:CREATE EXTENSION IF NOT EXISTS "postgis" WITH SCHEMA "public";

这样的错误有很多。

我联系了 Heroku 支持,他们提供了以下步骤来尝试手动修复问题。

以下是详细步骤:

  1. 下载数据库的备份。
  2. 使用以下命令将转储文件转换为 .sql 文件: pg_restore -f
  3. 修改 CREATE EXTENSION 命令以使用 CREATE EXTENSION IF NOT EXISTS extension_name WITH SCHEMA heroku_ext。您可以使用 sed 或您选择的文本编辑器来完成此操作。
  4. 使用 pg_restore 从您的应用程序将备份恢复到 Heroku Postgres。生产数据库中的扩展现在将由正确的架构拥有;未来的迁移、备份和恢复应该继续进行,而无需重复此过程。

我已按照步骤 3 修改了 .sql 文件,但我无法弄清楚如何将此 .sql 文件转换为 .dump 文件以在 Heroku 应用程序上恢复。

我已经尝试过heroku pg:psql --app <app> <sql_file> ,但它不起作用并引发错误。

有人可以帮我将此 .sql 文件导入 Heroku 吗?

Lau*_*lbe -1

您可以忽略该错误并在所需架构中手动创建扩展。如果您想避免出现错误消息,请在转储之前将扩展名删除到数据库中。这应该不是问题,因为数据库中的任何其他内容都不应该依赖于该扩展。