【问题标题】:Unable to delete from a temp table?无法从临时表中删除?
【发布时间】:2018-03-13 13:24:52
【问题描述】:

我一直遇到无法从临时表中删除数据的问题。但是,当我搜索错误消息时,我似乎无法在 Google 上找到相关匹配。我试图设置 REPLICA IDENTITY DEFAULT 和 NOTHING

CREATE TEMP TABLE name (LIKE schema.original);

错误:无法从表“名称”中删除,因为它没有 副本身份和发布删除提示:启用从 表,使用 ALTER TABLE 设置 REPLICA IDENTITY。

我正在尝试遵循 ETL 示例,因此我的查询看起来与此链接上的查询非常相似(表名和列不同):

https://github.com/gtoonstra/etl-with-airflow/blob/master/examples/etl-example/sql/process_customer_dimension.sql

我的搜索一直显示逻辑复制的命中,但是当我检查我的设置时,我发现它在复制之下。

name,setting
wal_level,replica

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您可以尝试将标识设置为完整,将使用整行作为标识符ALTER TABLE name REPLICA IDENTITY FULL;

    或者如果它有唯一索引 ALTER TABLE name USING INDEX index_name;

    默认情况下它会使用主键,我想应该没有。

    顺便说一句,您为什么要发布临时表? 我认为您应该删除它,因为我认为复制 temp 表没有意义。找到您的酒吧名称 SELECT * FROM pg_publication; 并从中删除临时表:ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...]

    【讨论】:

    • 我开始回复你说我没有出版物,但是当我从 pg_publication 中选择 * 时,果然有一个。我目前没有设置复制,但我在 PG10 首次发布时进行了实验。我以为我停止了它。让我再试一次。
    • 删除出版物解决了我的问题。我一定是无意中无缘无故地运行了几个月的出版物。我想知道它是否一直在影响性能。谢谢!
    • 在发布中删除表时订阅会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多