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

Pg_chameleon启动复制时列变为UNKNOWN_COL{数字}问题求助

解决pg_chameleon同步时UNKNOWN_COL与WHERE reference_id=NULL的问题

1. 校验字段定义与同步元数据一致性

  • 执行chameleon show_status --config default查看同步状态,确认是否存在未捕获的字段变更
  • 在MySQL中查询目标表字段结构:DESCRIBE water_db.master;
  • 在PostgreSQL中查询同步后的表字段:SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'sch_chameleon' AND table_name = 'master';
  • 若两者字段存在差异,先清理现有同步数据再重新初始化:chameleon drop_replica --config default && chameleon init_replica --config default --source mysql --debug

2. 检查MySQL二进制日志配置与同步权限

  • 确认MySQL的binlog格式为ROW模式:SHOW VARIABLES LIKE 'binlog_format';,若不是则修改my.cnf(或my.ini)中的binlog_format=ROW,重启MySQL服务
  • 验证同步用户权限,确保拥有REPLICATION SLAVE、REPLICATION CLIENT权限,以及water_db库的读写权限:SHOW GRANTS FOR 'your_sync_user'@'%';

3. 刷新pg_chameleon元数据缓存

  • 执行元数据刷新命令:chameleon refresh_schema --config default --source mysql
  • 重启复制进程:chameleon stop_replica --config default && chameleon start_replica --config default --debug

4. 排查字段类型与字符集兼容性

  • 检查reference_id字段类型,若为CHAR/VARCHAR且包含特殊字符,调整pg_chameleon配置文件(config/default.yaml)中的charset参数为对应编码(如utf8mb4)
  • 若字段为ENUM/SET类型,pg_chameleon可能解析异常,可临时通过skip_tables配置跳过该表,或在PostgreSQL中手动创建匹配类型后重新同步

5. 统一WSL与数据库的时区、字符集设置

  • 同步WSL Ubuntu时区与MySQL、PostgreSQL一致:timedatectl set-timezone Asia/Shanghai(根据实际时区调整)
  • 确认系统字符集为UTF-8:echo $LANG,若不符则修改/etc/default/locale后重启WSL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:02:35