1

我正在使用Timescale,今天我遇到了一个问题:我正在使用以下任何一种方式创建一个简单的表格:1-

> create table if not exists "NewTable" as (select * from "OldTable");
SELECT 6

2-

create table "NewTable" ("eventTime" timestamptz, name varchar);

成功创建表后。我写\d并且两个表的结果是相同的:

 Column   |           Type           | Collation | Nullable | Default 
-----------+--------------------------+-----------+----------+---------
eventTime | timestamp with time zone |           |          | 
name      | character varying        |           |          | 

但问题从这里开始......

 > SELECT create_hypertable('"NewTable"', '"eventTime"' ,migrate_data => true);
 ERROR:  tried calling catalog_get when extension isn't loaded

所以在我用谷歌搜索我的问题后,我发现每个人都被告知要创建我之前拥有的 timescaledb 扩展没有任何用处

> CREATE EXTENSION timescaledb CASCADE; //OR CREATE IF NOT EXISTS EXTENSION timescaledb CASCADE;
ERROR:  extension "timescaledb" has already been loaded with another version

> \dx
    Name     | Version |   Schema   |                            Description                            
-------------+---------+------------+-------------------------------------------------------- 
plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
timescaledb | 1.5.1   | public     | Enables scalable inserts and complex queries for time-series data

所以我该怎么做?

问题:为什么会这样?我现在应该如何创建超表?

在这些操作之前,我尝试从我的数据库中进行转储,在此之前,我有 20 个 main_hyper_tables。

4

1 回答 1

3

为什么会这样?

我猜 TimescaleDB 是通过标准方式安装的apt。由于最近发布了新版本的TimescaleDB(v.1.6),apt自动更新安装并将1.6的二进制文件复制到PostgreSQL安装的共享库中。因此加载了新的扩展版本,这与用于创建数据库的扩展 (v.1.5.1) 不同。

我现在应该如何创建超表?

我看到两个选项:

  1. 通过在 postgres 配置中明确指定来加载用于创建数据库的扩展版本。
  2. 将扩展更新到最新版本
ALTER EXTENSION timescaledb UPDATE

请参阅更新 TimescaleDB 文档中的使用 ALTER EXTENSION 部分

于 2020-01-24T08:41:14.247 回答