无法将hstore扩展安装到新创建的架构

时间:2019-06-06 10:24:19

标签: postgresql hstore pg-restore

我有一个安装了postgres 9.5的ubuntu 18.04。

我的数据库“ mydb”已安装hstore。当我执行“ \ dx存储”时,我确实有

List of installed extensions
  Name  | Version | Schema |                   Description                    
--------+---------+--------+--------------------------------------------------

hstore | 1.3     | public | data type for storing sets of (key, value) pairs
(1 row)

当我使用某个备份文件执行pg_restore时,会创建一个新的模式,也称为“ mydb”,但其中不包含“ hstore”扩展名。 “ \ dx”命令的结果相同。 hstore已经在我的template1中。

pg_restore失败,并显示

  

pg_restore:[存档(db)]无法执行查询:错误:类型“ hstore”不存在

谁能指出问题出在哪里?

谢谢

1 个答案:

答案 0 :(得分:3)

备份是使用相同版本的postgresql创建的吗? 转储/还原周期通常假定数据库是事先创建的,但是转储应创建扩展。 您能否搜索备份以查看其是否包含为架构创建扩展的指令:

     CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
  • 您将需要使用pg_restore命令来输出例如

    pg_restore mydump.dump|more
    

如果您未使用公共架构,则可能还需要检查是否在扩展名之前创建了架构。

在还原之前,您可以尝试以下方法在mydb模式中创建hstore扩展吗:

     CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA mydb;

或者,hstore扩展程序可能未正确安装。

    # locate hstore|grep postgresql
    # dpkg -S /path/to/hstore.so