1

我设置了许多模式:

模式:

hg=# \dn
 _timescaledb_cache    | postgres
 _timescaledb_catalog  | postgres
 _timescaledb_internal | postgres
 hg_quotes_raw         | zoolander
 hg_trade_volume_1m    | zoolander
 hg_trade_volume_day   | zoolander
 hg_trades_raw         | zoolander
 public                | postgres

在每个hg_xxx模式中,我都有许多表(大多数具有通用表名):

hg_quotes_raw:

hg=# \dt hg_quotes_raw.*
 hg_quotes_raw | hgf7 | table | zoolander
 hg_quotes_raw | hgf8 | table | zoolander
 ...
 hg_quotes_raw | hgz6 | table | zoolander
 hg_quotes_raw | hgz7 | table | zoolander

hg_trade_volume_1m:

hg=# \dt hg_trade_volume_1m.*
 hg_trade_volume_1m | hgf7 | table | zoolander
 hg_trade_volume_1m | hgf8 | table | zoolander
 ...
 hg_trade_volume_1m | hgz6 | table | zoolander
 hg_trade_volume_1m | hgz7 | table | zoolander

我有一张这样的表,hg_trade_volume_1m.hgq8如下所示:

hg=# \d hg_trade_volume_1m.hgq8
 time   | timestamp with time zone |           | not null | 
 volume | integer                  |           |          | 

hg=# select * from hg_trade_volume_1m.hgq8 limit 5;
 2016-12-16 09:32:00-05 |     88
 2016-12-16 13:45:00-05 |     88
 2016-12-22 13:42:00-05 |     86
 2017-01-04 11:43:00-05 |     43
 2017-01-04 13:38:00-05 |     22

问题:

当我尝试删除此表时,我收到一条错误消息,指出不存在不同的架构:

hg=# drop table if exists hg_trade_volume_1m.hgq8;
ERROR:  schema "hg_raw_quotes" does not exist

在这个 drop 语句之后,我的表仍然存在:

hg=# \d hg_trade_volume_1m.hgq8
 time   | timestamp with time zone |           | not null | 
 volume | integer                  |           |          | 

hg=# select * from hg_trade_volume_1m.hgq8 limit 5;
 2016-12-16 09:32:00-05 |     88
 2016-12-16 13:45:00-05 |     88
 2016-12-22 13:42:00-05 |     86
 2017-01-04 11:43:00-05 |     43
 2017-01-04 13:38:00-05 |     22

问题:

  • 为什么我不能放下这张桌子?
  • 为什么 postgres 在错误消息中提到不同的模式?

笔记:

错误消息中提到的架构曾经存在,但已从数据库中删除。

hg=# \dn hg_raw_quotes

另请注意,表(和相关的 timescaledb 超表)最初不是在模式中创建的,而是在创建后迁移到模式中。不确定这是否是根本原因?

4

0 回答 0