Azure Database for PostgreSQL 迁移服务的已知错误
本文包含迁移前验证的错误消息号及其描述。
下表提供了 Azure Database for PostgreSQL 中迁移服务功能的完整错误代码列表。 这些错误代码可帮助你排查和解决迁移过程中出现的问题。 每个错误代码附带错误消息和其他详细信息,提供了用于解决问题的更多上下文和指导。
连接超时
现象
迁移失败通常通过指示连接问题的错误消息来显示。 数据传输过程中可能会出现这些问题。 发生此类故障时,它们会导致以下错误消息:
- 服务器意外关闭了连接
- SSL SYSCALL 错误: 检测到 EOF
- 客户端连接上出现意外 EOF
- 无法从客户端接收数据:对等机重置了连接
原因
这些症状的根本原因是 connection timeout
如果服务器或客户端希望在某个时间范围内接收数据,但未发送或接收任何数据,从而导致连接超时,则会发生这种情况。连接超时的具体原因可能有所不同,但常见因素包括网络拥塞、网络设置配置错误或过度激进的超时设置。
在 Azure Database for PostgreSQL 中的迁移服务上下文中,源与迁移服务之间的连接超时或迁移服务与目标之间的连接超时可能会中断数据传输过程,从而导致上述症状。
解决方法
要解决连接超时问题,请调整源服务器和目标服务器上的 TCP 参数,如下所示:
tcp_keepalives_idle=10
tcp_keepalives_interval=10
tcp_keepalives_count=60
这些设置通过发送心跳探测来帮助维持连接,以防止由于处于非活动状态而导致的超时。 重要的是,修改这些 TCP 参数不需要重启源或目标 PostgreSQL 实例。 可以动态应用更改,从而允许服务无缝继续,而不会中断数据库操作。
迁移错误代码
错误代码 | 错误消息 | 解决方法 |
---|---|---|
603000 | 连接失败。 连接到服务器 {serverName} 失败。 确保可以从目标服务器或运行时服务器访问源服务器。 |
请参阅网络指南了解如何调试连接问题。 |
603001 | SSL 配置错误。 服务器 {serverName} 不支持 SSL。 检查 SSL 设置。 将 SSL 模式设置为“首选”并重试迁移。 |
请参阅网络指南了解如何调试连接问题。 |
603100 | 身份验证失败。 服务器 {serverName} 的密码不正确。 输入正确的密码,然后重试迁移。 |
空值 |
603101 | 数据库存在于目标中。 目标服务器上存在数据库 {dbName} 。 确保目标服务器上没有该数据库,然后重试迁移。 |
空值 |
603102 | 缺少源数据库。 源服务器上不存在数据库 {dbName} 。 提供有效的数据库并重试迁移。 |
空值 |
603103 | 缺少 Microsoft Entra 角色。 目标服务器上缺少 Microsoft Entra 角色 {roleNames} 。 创建 Entra 角色并重试迁移。 |
空值 |
603104 | 缺少复制角色。 用户 {0} 在服务器 {1} 上没有复制角色。 在重试迁移之前授予复制角色。 |
使用 ALTER ROLE <rolename> WITH REPLICATION; 授予所需的权限。 |
603105 | GUC 设置错误。 源服务器上的复制槽不足,无法迁移。 将 max_replication_slots GUC 参数提高至 {0} 或更高。 |
源服务器上没有足够的复制槽用于执行联机迁移。 使用查询 SELECT * FROM pg_replication_slots WHERE active = false AND slot_type = 'logical'; 获取非活动复制槽的列表,并在启动迁移之前使用 SELECT pg_drop_replication_slot('slot_name'); 删除它们。 或者,将“max_replication_slots”服务器参数设置为 {0} 或更高。 确保同时将 max_wal_senders 参数更改为大于或等于 max_replication_slots' parameter 。 |
603106 | GUC 设置错误。 max_wal_senders GUC 参数设置为 {0} 。 确保它匹配或超过“max_replication_slots”值。 |
空值 |
603107 | GUC 设置错误。 源服务器 WAL 级别参数设置为 {0} 。 将 GUC 参数 WAL 级别设置为“逻辑”。 |
空值 |
603108 | 需要将扩展列入允许列表。 扩展 {0} 无法安装在目标服务器上,因为它们未列入允许列表。 将扩展列入允许列表并重试迁移。 |
按照 PostgreSQL 扩展中所述的步骤设置允许列表。 |
603109 | 共享预加载库配置错误。 将列入允许列表的扩展 {0} 添加到目标服务器上的“shared_preload_libraries”,然后重试迁移。 |
按照 PostgreSQL 扩展中所述的步骤设置共享预加载库。 这需要重启服务器。 |
603110 | 权限不足。 迁移用户缺少进行数据库访问所需的权限。 确保迁移用户是源数据库的所有者并且具有读写权限,然后重试迁移。 | 空值 |
603111 | 目标数据库清理失败。 在迁移前阶段无法终止目标数据库上的活动连接。 授予迁移用户 pg_signal_backend 角色并重试迁移。 | 使用“GRANT pg_signal_backend to <migration_user>”命令将 pg_signal_backend 角色添加到迁移用户 |
603112 | GUC 设置错误。 无法将 default_transaction_read_only GUC 参数设置为 off。 确保用户写访问权限设置正确,然后重试迁移。 | 通过 Azure 门户或 psql 命令在源服务器上将“default_transaction_read_only”设置为 OFF(例如,ALTER SYSTEM SET default_transaction_read_only = off)。 |
603113 | 直接转换失败。 无法启动数据库“{dbName}”的直接转换,因为迁移状态已为“已完成/已失败/已取消”。 | 空值 |
603114 | 直接转换失败。 无法启动数据库“{dbName}”的直接转换,因为迁移模式为脱机。 | 空值 |
603115 | 缺少用户权限。 迁移用户“{0}”不是 azure_pg_admin 角色的成员。 在目标服务器上添加必要的权限并重试迁移。 | 空值 |
603116 | 缺少用户权限。 迁移用户“{0}”没有“创建角色”权限。 在目标服务器上添加必要的权限并重试迁移。 | 在目标服务器上运行查询 ALTER ROLE <rolename> WITH CREATEROLE; 。 |
603117 | 缺少用户权限。 迁移用户“{0}”缺少删除目标服务器上的“{dbName}”数据库所需的权限。 从目标服务器手动删除数据库并重试迁移。 | 空值 |
603400 | 不支持的源版本。 不支持迁移低于 {0} 的 PostgreSQL 版本。 |
必须使用其他迁移方法。 |
603401 | 排序规则不匹配。 目标服务器上不存在数据库 {1} 中的排序规则 {0} 。 |
空值 |
603402 | 排序规则不匹配。 目标服务器上不存在表 {1} 中列 {2} 的排序规则 {0} 。 |
请联系 Azure 支持部门来添加所需的排序规则。 |
603403 | 排序规则不匹配。 源数据库包含用户定义的排序规则。 请删除这些排序规则并重试迁移。 | 空值 |
603404 | 检测到不受支持的 OID。 在数据库 {0} 中检测到具有“WITH OID”的表。 PostgreSQL 版本 12 及更高版本不支持这些表。 |
访问 PostgreSQL 发行说明。 |
603405 | 不支持的扩展。 迁移服务不支持迁移目标服务器上具有 {0} 扩展的数据库。 |
空值 |
603406 | 不支持的扩展。 目标 PostgreSQL {0} 支持 POSTGIS 版本 3.2.3,而该版本与源的 {1} 不兼容。 |
建议将目标服务器升级到版本 11。 访问 PostGIS 中断性变更。 |
603407 | 扩展架构错误。 源服务器上的系统架构中的扩展 {0} 在目标服务器上不受支持。 删除并重新创建非系统架构中的扩展,然后重试迁移。 |
访问 PostgreSQL 扩展。 |
603408 | 不支持的扩展。 目标服务器版本 16 不支持 {0} 扩展。 迁移到版本 15 或更低版本,然后在扩展受支持后升级。 |
空值 |
603409 | 存在用户定义的强制转换。 源数据库 {0} 包含无法迁移到目标服务器的用户定义的强制转换。 |
空值 |
603410 | 系统表权限错误。 用户有权访问无法迁移到目标的系统表(例如 pg_authid 和 pg_shadow)。 撤销这些权限并重试迁移。 | 验证授予 pg_catalog 表/视图(例如 pg_authid 和 pg_shadow )的默认权限至关重要。 但是,这些权限不能分配到目标。 具体而言,用户 {1} 拥有 {2} 权限,而用户 {3} 拥有 {4} 权限。 若要获取解决方法,请访问用户、角色和权限 |
603413 | 不支持的语言。 迁移服务不支持迁移目标服务器上使用 {0} 语言的数据库。 删除语言及其实现的函数。 |
空值 |
603700 | 目标数据库清理失败。 在迁移前/迁移后阶段无法终止目标数据库上的活动连接。 | 空值 |
603701 | 内部服务器错误。 无法在目标服务器上创建角色。 | 请联系 Azure 支持以进行进一步的分析。 |
603702 | 内部服务器错误。 无法从源服务器转储角色。 | 请联系 Azure 支持以进行进一步的分析。 |
603703 | 内部服务器错误。 无法编辑全局角色转储文件。 | 请联系 Azure 支持以进行进一步的分析。 |
603704 | 内部服务器错误。 无法将所有源角色设为目标迁移用户的成员。 | 请联系 Azure 支持以进行进一步的分析。 |
603705 | 内部服务器错误。 未能还原授予/撤销操作。 | 请联系 Azure 支持以进行进一步的分析。 |
603706 | 内部服务器错误。 无法清理目标服务器迁移用户。 目标迁移用户可以属于多个角色。 从目标服务器迁移用户中删除所有不必要的角色并重试迁移。 | 请联系 Azure 支持以进行进一步的分析。 |
603707 | 内部服务器错误。 无法将 azure_pg_admin 授予源服务器管理员用户。 | 请联系 Azure 支持以进行进一步的分析。 |
603708 | 内部服务器错误。 无法将数据库“{dbName}”中公共架构的所有者更改为 azure_pg_admin。 手动将公共架构的所有者更改为 azure_pg_admin 并重试迁移。 | 请联系 Azure 支持以进行进一步的分析。 |
603709 | 迁移设置失败。 | 请联系 Azure 支持以进行进一步的分析。 |