我设置了许多模式:
模式:
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 超表)最初不是在模式中创建的,而是在创建后迁移到模式中。不确定这是否是根本原因?