You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aurora PostgreSQL迁移至RDS PostgreSQL表导入字符过长报错求助

解决方案

排查导出工具的自动配置问题

  • 检查DBeaver导出设置:导出.sql转储时,务必取消勾选**"为字符类型添加默认长度"**这类选项。部分可视化工具会自动给character varying[]的数组元素加上默认长度限制(比如255),导致导入时触发长度校验报错。
  • 改用PostgreSQL原生pg_dump命令导出,避免工具篡改表结构:
    pg_dump -h <源库主机地址> -U <用户名> -d <数据库名> -t public.indexer --no-owner --no-privileges > indexer_dump.sql
    
    该命令会严格复刻源库的表结构定义,不会给数组元素附加多余的长度限制。

手动修复目标表结构后再导入

如果已经在目标库创建了带错误限制的表,先清理后重建正确结构,再导入数据:

  1. 删除错误表:
    DROP TABLE IF EXISTS public.indexer;
    
  2. 手动执行正确的建表语句:
    CREATE TABLE public.indexer(
        id character varying(50) NOT NULL,
        fullnm character varying(255),
        url_display character varying[]
    );
    
  3. 单独导出并导入数据:用pg_dump仅导出数据部分,避免重复处理表结构:
    pg_dump -h <源库主机地址> -U <用户名> -d <数据库名> -t public.indexer --data-only > indexer_data.sql
    
    之后在目标库执行这个数据脚本即可。

核对源库与目标库的PostgreSQL版本

Aurora PostgreSQL和RDS PostgreSQL的版本差异可能导致数组类型处理逻辑不一致,确认两边大版本(如14.x、15.x)一致。若版本差距较大,导出时指定兼容目标版本的格式:

pg_dump -h <源库主机地址> -U <用户名> -d <数据库名> -t public.indexer --no-owner --no-privileges --target-version <目标库版本号> > indexer_dump_compatible.sql

临时应急:跳过报错记录(不推荐,可能丢数据)

如果需要快速完成迁移且可接受少量数据丢失,导入时关闭错误终止机制:

psql -h <目标库主机地址> -U <用户名> -d <数据库名> -v ON_ERROR_STOP=off -f indexer_dump.sql

但优先推荐修复结构问题后完整导入。

内容的提问来源于stack exchange,提问作者ejigu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:15:12