注册
解决Mysql迁移列长度超出定义的问题
技术分享/ 文章详情 /

解决Mysql迁移列长度超出定义的问题

üoooo 2025/01/02 296 0 0

一、问题概述

近期在将数据从MySQL迁移到达梦数据库的时候,出现报错提示:列长度超出定义
image.png

二、问题分析

搜索达梦相关问答和技术资料之后,终于找到原因——达梦存放不下mysql迁移过来的字符串(达梦底层以字节单位存储,mysql是以字符,迁移到达梦会出现varchar/char长度不够的问题)
在早期版本8.1.3.162之前,通过设置length_in_char=1来进行规避,但是在8.1.3.162版本之后,取消了此参数,达梦底层现在默认字节单位存储,mysql是以字符,所以会出现问题。

三、解决办法

我的解决方式通过 SQLark 百灵连接,自动把源库的字段varchar(x)映射成目的库的varchar(N char),可以一键解决这个问题。
在这里推荐一下SQLark,它提供的导出评估报告和自动规划表空间等功能,使用起来非常方便。 这里附上下载链接:www.sqlark.com

1、功能入口

在选择迁移范围/配置环节,点击当前生效映射规则,可查看正在应用的映射规则,SQLark 提供系统默认字段映射规则和自定义字段映射规则。
image.png

2、查看系统默认规则

SQLark 内置了 2 套基于达梦专家经验的默认字段映射规则 (Oracle 和 MySQL),自动转换迁移到达梦的表字段类型,这些规则会自动应用于数据迁移过程中。系统默认规则不可修改。
image.png

3、添加字段映射规则

SQLark 支持对现有的自定义规则进行编辑或新增规则,操作步骤如下:

  1. 点击 开启编辑 按钮,进入自定义规则配置页面后,点击 添加规则,即可新一条字段映射规则。
  2. 设置各项自定义参数值:
    image.png
  3. 设置完成后,点击 保存,该规则将保存成功;点击保存并应用于本任务,该规则将立即应用到当前迁移任务中。

其他映射规则管理功能

此外,SQLark 提供以下配置项:
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服