全量阶段失败报错,关键字“Invalid GIS data provided to function st_geometryfromtext'”
场景描述
全量迁移或同步期间DRS任务报错,日志提示信息:An error occurred in the process DATAMOVE, caused by: apply event=[type=table_data, shard_id=0, batch_index_in_shard=1, table_name=%s, record_num=1] occur error, msg=apply data of table=%s failed: Data truncation: Invalid GIS data provided to function st_geometryfromtext.
可能原因
跨版本迁移MySQL地理类型数据时,目标数据库与源数据库合法地理类型检查规则不一致,常见于5.6版本迁移至5.7、8.0 版本。源数据库地理类型数据在目标库版本中为非法格式,导致使用DRS在目标库插入数据时报错。
例如,使用POLYGON表示多边形时,5.7及以上版本会校验坐标点个数,至少需要3个点构成有效多边形。而在5.6版本中不做校验,单个坐标点表示的多边形也能正常插入。
解决方案
- 方法一:
- 按照目标数据库版本格式要求,修改源数据库中不满足要求的地理类型数据。
- 修改完成后,在任务列表中,单击任务对应操作列的“续传”,重新提交任务。
- 方法二:
- 重新创建DRS任务,对象选择时不勾选报错的表。
- 在迁移完成后,导出该表数据,修改为目标库合法格式后,手动迁移至目标库。