Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql迁移达梦列长度超出定义

mysql迁移达梦列长度超出定义的简单解决方法

作者:二两面

这篇文章主要介绍了mysql迁移达梦列长度超出定义解决方法的相关资料,,在达梦数据库中,字符串长度的存储方式与MySQL不同,导致迁移过程中出现数据长度不足的错误,解决方法包括在MySQL中将varchar类型修改为varchar(10char)以强制字符存储,需要的朋友可以参考下

一、问题概述

mysql迁移达梦遇到列长度超出定义,错误如下

造成此错误原因是达梦存放不下mysql迁移过来的字符串,在早期版本8.1.3.162之前,通过设置length_in_char=1来进行规避,但是这种方式实际上扩大了数据精度,造成能存放超过设置的长度的数据。

在8.1.3.162版本之后,取消了此参数,length_in_char无法设置 只能为0 ,因为达梦底层是以字节单位存储,mysql是以字符,通过迁移工具迁移到达梦会出现varchar char长度不够的问题。

二、解决办法

2.1、问题复现

length_in_char=0的情况下(新版本取消,此参数只能是0) 字符集UTF8情况下

比如 mysql varchar(10) 能存放10个中文 ,到达梦varchar(10)只能存放三个中文,UTF8字符集 一个中文占用三个字节。

但是可以通过 将varchar(10)修改成varchar(10 char)强制为字符存储,到达梦也能存放10个中文字符

2.2 迁移工具设置

在迁移工具中设置映射关系

第一步:设置数据类型映射

第二步:配置映射关系

在选择迁移对象界面查看表结构是否转换

第三步:开始迁移

总结 

到此这篇关于mysql迁移达梦列长度超出定义解决方法的文章就介绍到这了,更多相关mysql迁移达梦列长度超出定义内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文