当前位置: 首页 > article >正文

【达梦数据库】MYSQL迁移到DM字符集转换问题-UTF8mb4|转UTF8(UTF8mb3)

目录

  • 背景
  • 现象
  • 问题原因
    • 原因1:字符集不同
    • 原因2:以字节为单位
  • 解决办法
    • 方法1:扩大长度
  • 结果验证
    • MYSQL
    • DTS
    • DM

背景

迁移过程环境信息如下:

数据库版本字符集补充
MYSQL8.0.xxUTF8mb4
DM8.1.3.162UTF8(UTF8mb3的简称)以字节为单位

现象

用户在使用DMDTS工具把数据从MYSQL数据库迁移到DM数据库时,使用DTS默认参数,在迁移数据的过程中varchar类型的字段会报错:列[xxx]长度超出定义
在这里插入图片描述

问题原因

原因1:字符集不同

  • DM 数据库目前不支持 UTF8mb4字符集。

  • 由于UTF8mb4UTF8(UTF8mb3的简称)存在 区别: UTF8mb4一个超长字符最大使用4字节数来存储,UTF8mb3一个超长字符最大使用3字节数来存储。

  • 假设在MYSQLvarchar类型的字段最大长度是n,那么在DMvarchar类型的字段最大长度就应该是n*4/3,这样才能存的下。

原因2:以字节为单位

  • MySQL 中 varchar(1) 可以存一个汉字,而DM 是以字节为单位。UTF-8 字符集,varchar(3) 才可以存一个汉字。
    在这里插入图片描述

  • 假设在MYSQLvarchar类型的字段最大长度是m,那么在DMvarchar类型的字段最大长度就应该是m*3

解决办法

方法1:扩大长度

综合原因1和原因2,MYSQLvarchar类型的字段最大长度是k,那么在DMvarchar类型的字段最大长度就应该是k*4,这样才能存的下。

结果验证

MYSQL

表结构
在这里插入图片描述
表数据
在这里插入图片描述

DTS

k-->k*4,然后迁移
在这里插入图片描述

DM

在这里插入图片描述


http://www.kler.cn/a/392571.html

相关文章:

  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • 标准C++ 字符串
  • Qt 和 WPF(Windows Presentation Foundation)
  • ssm100医学生在线学习交流平台+vue(论文+源码)_kaic
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • UVC 输出视频格式修改和windows下数据分析
  • Dubbo 3.x源码(25)—Dubbo服务引用源码(8)notify订阅服务通知更新
  • AI绘画经验(stable-diffusion)
  • 如何理解DDoS安全防护在企业安全防护中的作用
  • 力扣(LeetCode)611. 有效三角形的个数(Java)
  • adworld - stack2
  • 基于 Express+JWT + Vue 的前后端分离架构
  • 黄色校正电容102j100
  • 树莓派(Raspberry Pi)Pico 2 C_C++开发环境配置(Docker+SDK)
  • SpringBoot后端解决跨域问题
  • 【Jenkins实战】Windows安装服务启动失败
  • [HAOI2015] 树上染色(树形 DP)
  • 项目技术栈-解决方案-消息队列
  • T507 buildroot linux4.9之AP6275S wifi/bt 以太网开发调试
  • 小白docker入门简介
  • day60 图论章节刷题Part10(Floyd 算法、A * 算法)
  • linq语句在CAD c# 二次开发中的应用——快速筛选curve中polyline
  • 【C++】C++11特性(上)
  • docker执行java的jar包
  • 机器学习引领流体动力学新纪元:CFD、Fluent与OpenFOAM的深度融合
  • ‌STM32的USART2_RX引脚可以外接5V电压