【问题标题】:ltree extension installed, but create table still throws error已安装 ltree 扩展,但创建表仍会引发错误
【发布时间】:2020-11-27 20:30:09
【问题描述】:

我添加了 ltree 扩展,我可以在我的数据库中看到该扩展,但是当我运行以下查询时:

CREATE TABLE flight_office.document_folder (
document_folder_id serial8,
name varchar,
path ltree,
PRIMARY KEY (document_folder_id) 
);

我明白了: 错误:类型“ltree”不存在

【问题讨论】:

  • 当你说你“添加”了它,你到底做了什么?请显示所采取的步骤。
  • 我看到您至少使用了一个非默认架构 flight_office - 如果您使用多个架构,请确保为类型指定完全限定名称(例如,public.ltree 如果扩展名在public 架构中创建)或(最好)始终将您创建扩展的架构包含到search_path stackoverflow.com/questions/21909417/…
  • 我刚开始使用 Postgres(来自 MySQL),看来我需要更多时间来更好地理解模式。谢谢波兹。
  • @pozs 问题实际上是我的架构。一旦我删除它并坚持使用公共并添加扩展程序,它就可以正常工作。不知道如何最好地处理这个问题和你的答案。

标签: postgresql


【解决方案1】:

正如@pozs 所指出的,EXTENSION 应该与架构一起添加,以下对我有用:

CREATE EXTENSION  IF NOT EXISTS  LTREE
     WITH   SCHEMA  schema_name;

【讨论】:

    【解决方案2】:

    这也有效。如果未指定架构,它将为公共架构创建扩展。

    CREATE EXTENSION IF NOT EXISTS ltree;
    

    【讨论】:

      【解决方案3】:

      可能您的架构未包含在search_path 中。

      要在不同于public 的架构中安装ltree 扩展,需要执行一些步骤。假设您的架构称为“myschema”:

      首先创建架构并安装扩展:

      CREATE SCHEMA myschema;
      
      CREATE EXTENSION IF NOT EXISTS ltree
      WITH SCHEMA myschema;
      

      您可以检查最后一步

      SELECT *
      FROM information_schema.schemata
      WHERE schema_name = 'myschema';
      
      SELECT * 
      FROM pg_available_extensions
      WHERE name = 'ltree';
      

      SELECT *
      FROM pg_extension;
      
      select *
      from pg_catalog.pg_namespace;
      

      extowner 表示扩展可用的架构。

      然后,检查myschema是否属于search_path

      SHOW search_path;
      

      ;如果不向其中添加您的架构:

      SET search_path TO "$user", public, myschema;
      

      后者仅为会话设置search_path。如果您想永久设置它,请使用

      ALTER DATABASE <DATABASE_NAME> SET search_path TO "$user", public, myschema;
      

      最后尝试创建一个表:

      create table myschema.temptable (
          id INTEGER PRIMARY KEY,
          path ltree UNIQUE
      );
      

      并添加一些值:

      INSERT INTO myschema.temptable (id, path)
      values (1, 'root');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        相关资源
        最近更新 更多