限制和考虑事项
在使用 PostgreSQL 源时,应注意以下限制和注意事项:
所有数据任务的限制和注意事项
- 数据库名称不能包含分号 (;)。
- 不支持在数据库处于热备用模式时捕获更改。
-
要从第二数据库捕获更改,必须在数据库上配置读/写权限。由于写权限要求,不支持 PostgreSQL 读副本(在高可用性环境中)。
有关读写权限的信息,请参阅从客户安装的 PostgreSQL 数据库捕获更改。
- 具有相同名称但大小写不同(例如 table1、TABLE1 和 Table1)的多个表的 移动 可能会导致不可预测的行为,因此不受支持。
- 不支持 TRUNCATE 操作的更改处理。
- 不支持延迟约束。
-
仅支持副本标识的默认配置。
有关副本标识的更多信息,请参阅 https://www.postgresql.org/docs/10/logical-replication-publication.html
-
不支持带有 CASE 表达式的唯一索引。
仅登陆任务的限制和注意事项
- 不支持分区表。
- 强制故障转移是 Azure Database for PostgreSQL–Flexible Server 的一项功能。如果来自 Azure Database for PostgreSQL–Flexible Server 的 移动 数据发生强制故障转移,则任务将停止,需要重新创建数据集。
仅复制任务的限制和注意事项
- 源表和相应的目标表必须具有相同的主键。如果其中一个表没有主键,则 DELETE 和 UPDATE 记录操作的结果将不可预测。
- 不支持“从时间戳开始进程更改”运行选项。
- 不支持之前映像的移动。
-
支持 [CREATE | ALTER | DROP] 表 DDL 的更改处理,除非它们保存在内部函数/过程体块或其他嵌套结构中。
例如,将不会捕获以下更改:
CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL);
END;
$$;
当捕获对源表的更改时,只有在 RENAME TABLE 操作之前有 DML 操作时,才会捕获 RENAME TABLE 操作。
不支持 PostGIS 数据类型。
强制故障转移是 Azure Database for PostgreSQL–Flexible Server 的一项功能。如果来自 Azure Database for PostgreSQL–Flexible Server 的 移动 数据发生强制故障转移,则任务将停止,需要重新加载数据集。
PostgreSQL 15.x 中引入的 SQL MERGE 命令尚未经过认证。
不受支持的数据类型
不支持以下数据类型:
-
PostGIS
- INT4MULTIRANGE
- INT8MULTIRANGE
- NUMMULTIRANGE
- TSMULTIRANGE