尝试在 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 灵活服务器中工作。
我该如何解决这个问题?
错误:“_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
查询成功运行。