在 Azure 灵活服务器 for PostgreSQL 中同时运行物化视图刷新时出现语法错误

问题描述 投票:0回答:1

尝试在 Azure 灵活服务器 for PostgreSQL v11.22 中同时刷新物化视图时遇到语法错误。

REFRESH MATERIALIZED VIEW CONCURRENTLY data.mv_summary WITH DATA;

以下是错误的详细信息:

ERROR: syntax error at or near "_2"
LINE 1: CREATE TEMP TABLE "pg_temp_8"."pg_temp_3403908"_2 AS SELECT ...
^
QUERY: CREATE TEMP TABLE "pg_temp_8"."pg_temp_3403908"_2 AS SELECT mv.ctid AS tid, 
newdata.*::"pg_temp_8"."pg_temp_3403908" AS newdata FROM "data"."mv_summary" mv FULL 
JOIN "pg_temp_8"."pg_temp_3403908" newdata ON ("newdata"."workspace_id" 
OPERATOR("pg_catalog".=) "mv"."workspace_id" AND newdata.* OPERATOR(pg_catalog.*=) 
mv.*) WHERE newdata.* IS NULL OR mv.* IS NULL ORDER BY tid

相同的物化视图并发刷新在另一个具有相同版本的 Postgres 的 Azure 灵活服务器中工作。

我该如何解决这个问题?

postgresql materialized-views azure-postgresql
1个回答
0
投票

错误:“_2”处或附近有语法错误 第 1 行:创建临时表“pg_temp_8”.“pg_temp_3403908”_2 作为选择...

上述错误是由于创建表时表名不匹配导致的。正如错误所示

sql syntax error at or near "_2"
。所以,正确的说法如下所示。

CREATE TEMP TABLE "pg_temp_8"."pg_temp_3403908_2" AS SELECT * FROM <tableName>;

执行上述查询后,请按照以下步骤执行

REFRESH MATERIALIZED VIEW
查询:

  • 使用以下命令创建
    MATERIALIZED VIEW
CREATE MATERIALIZED VIEW <MaterializedViewName> AS SELECT * FROM <tableName>;
  • 创建物化视图的
    unique
    索引。
CREATE UNIQUE INDEX <indexName> ON <MaterializedViewName> (<columnName>);
  • 现在,执行
    MATERIALIZED VIEW
    语句,如下所示。
REFRESH MATERIALIZED VIEW CONCURRENTLY <MaterializedViewName>;

下面我尝试使用示例表,并且

MATERIALIZED VIEW
查询成功运行。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.