news 2026/9/21 21:58:39

MySQL 与 DM 字段类型映射大全

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 与 DM 字段类型映射大全

达梦作为国产数据库,其数据类型与Oracle风格更接近,在与MySQL进行数据迁移、应用适配时需要特别注意类型的选择。


核心原则

  1. 精度优先:映射时优先考虑数据精度和范围,而非名称一致。

  2. 长度差异:字符串类型长度定义语义不同(MySQL是字符数,达梦默认是字节数,但可指定字符集)。

  3. 无符号处理:MySQL支持UNSIGNED,达梦没有此概念,需用更大范围的有符号类型承载。

  4. 自动递增:MySQL用AUTO_INCREMENT,达梦用IDENTITY(1,1)

  5. 布尔类型:MySQL有BOOL/TINYINT(1),达梦有BITTINYINT


数据类型映射大全

分类MySQL 数据类型达梦 (DM8) 推荐映射类型关键说明与注意事项
整数类型TINYINTTINYINT范围相同(-128 ~ 127)。MySQL的无符号TINYINT(0~255)需映射为达梦的SMALLINT
TINYINT UNSIGNEDSMALLINT
SMALLINTSMALLINT范围相同(-32768 ~ 32767)。MySQL无符号需映射为达梦INT
SMALLINT UNSIGNEDINT
MEDIUMINTINTMySQL特有类型。达梦用INT足够容纳(-8388608~8388607)。无符号需用BIGINT
MEDIUMINT UNSIGNEDBIGINT
INT/INTEGERINT范围相同。MySQL无符号需映射为达梦BIGINT
INT UNSIGNEDBIGINT
BIGINTBIGINT范围相同。MySQL无符号无完美对应类型,可考虑DECIMAL(20,0)BIGINT(需应用层确保非负)。
BIGINT UNSIGNEDDECIMAL(20,0)BIGINT+ 约束
小数/数值DECIMAL(M,D)/NUMERIC(M,D)DECIMAL(M,D)/NUMERIC(M,D)最安全映射。精度与标度定义一致。M为总位数,D为小数位。
FLOAT(M,D)FLOAT不推荐指定M,D。达梦的FLOAT是浮点数,精度行为与MySQL可能有细微差异。对于精确数值,请使用DECIMAL
DOUBLE(M,D)DOUBLE/DOUBLE PRECISION同上,不推荐指定M,D。
日期时间DATEDATE完全兼容。
TIMETIME完全兼容。
DATETIMEDATETIME注意:MySQL 5.6+的DATETIME支持毫秒(DATETIME(6)),达梦DATETIME精度到秒。如需毫秒,应使用DATETIME(6)TIMESTAMP(6)
DATETIME(fsp)DATETIME(fsp)TIMESTAMP(fsp)重点:必须指定小数秒精度(fsp),如DATETIME(3)
TIMESTAMPTIMESTAMP达梦TIMESTAMP默认带时区(但存储的是时间戳值),行为与MySQL的TIMESTAMP(自动时区转换)有本质不同。迁移时需评估业务逻辑。
TIMESTAMP(fsp)TIMESTAMP(fsp)同上,并注意精度匹配。
YEARSMALLINTMySQL特有。用2位或4位年份,达梦无直接对应,通常用SMALLINT存储4位年份。
字符串类型CHAR(N)CHAR(N)重要区别:MySQL的N是字符数,达梦默认是字节数。若使用中文字符集(如UTF8),达梦应定义为CHAR(N CHAR)
VARCHAR(N)VARCHAR2(N CHAR)最佳实践:达梦中推荐使用VARCHAR2始终使用(N CHAR)来按字符定义长度,避免乱码和截断。最大长度受页大小限制(通常支持到8188字符左右)。
TINYTEXTVARCHAR2(255 CHAR)根据实际最大长度选择合适的大小。
TEXTCLOB大文本字段。达梦的CLOB行为与MySQLTEXT类似,但函数、索引支持有差异。
MEDIUMTEXTCLOB
LONGTEXTCLOB
ENUM('v1','v2')VARCHAR2(100 CHAR)+ 检查约束MySQL特有。达梦中可用CHECK约束模拟。
SET('v1','v2')VARCHAR2(200 CHAR)或 多对多关系表MySQL特有。建议范式化或程序逻辑处理。
二进制类型BINARY(N)CHAR(N) BYTE定长二进制。
VARBINARY(N)VARBINARY(N)RAW(N)变长二进制。达梦RAW更常用。
TINYBLOBBLOB达梦的BLOB可覆盖所有MySQL的BLOB变体。
BLOBBLOB
MEDIUMBLOBBLOB
LONGBLOBBLOB
其他类型BIT(M)BITVARBIT位类型。达梦BIT是单比特,VARBIT可变长度。MySQLBIT(8)可用达梦BINARY(1)VARBIT(8)模拟。
BOOL,BOOLEANTINYINTBIT本质都是TINYINT(1)。达梦中可用TINYINT,或用BIT表示真/假。
JSONVARCHAR2(4000 CHAR)/CLOB+ 应用层解析达梦无原生JSON类型(DM8新版本已支持JSON,但语法函数不同)。通常用文本存储,或用LONGVARCHAR
GEOMETRY等空间类型无直接对应,可用BLOB/RAW存储WKB达梦对空间数据支持有限,需应用层处理。
自增列INT AUTO_INCREMENT PRIMARY KEYINT IDENTITY(1,1) PRIMARY KEY语法不同。达梦使用IDENTITY关键字。

迁移与开发建议

  1. 字符串长度定义:在达梦DDL中,对于中文字符集,务必使用VARCHAR2(50 CHAR)而非VARCHAR2(50),后者是按字节计算,容易导致字符截断。

  2. 日期时间精度:如果MySQL使用了DATETIME(3)等带精度的类型,达梦必须对应使用DATETIME(3),否则会丢失毫秒信息。

  3. TIMESTAMP 时区陷阱:这是最大的坑。MySQL的TIMESTAMP会在存取时根据会话时区转换,存储为UTC;达梦的TIMESTAMP存储的是“日期时间值”,没有自动时区转换。强烈建议

    • 如果业务不关心时区,只用本地时间,两边都用DATETIME

    • 如果需要时区支持,达梦侧需使用TIMESTAMP WITH TIME ZONE,并在应用层仔细处理。

  4. 无符号处理:在达梦侧,对原MySQL的无符号列,考虑增加CHECK(column >= 0)约束来保证数据一致性。

  5. 工具辅助:使用达梦的DTS 迁移工具可以自动完成大部分类型映射,但工具转换后必须人工核对上述关键点,尤其是字符串和日期类型。

  6. 测试验证:务必对边界值(如最大长度、日期范围、大数值)进行充分测试,确保数据存储、查询、计算的结果一致。


示例DDL对比

-- MySQL 表 CREATE TABLE user ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, age TINYINT UNSIGNED, balance DECIMAL(10,2), created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3), description TEXT ); -- 对应的达梦表(建议) CREATE TABLE user ( id BIGINT IDENTITY(1,1) PRIMARY KEY, -- 无符号INT用BIGINT承载 name VARCHAR2(30 CHAR) NOT NULL, -- 使用CHAR语义定义长度 age SMALLINT, -- 无符号TINYINT用SMALLINT balance DECIMAL(10,2), created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3), -- 保持精度 description CLOB );

这份映射表涵盖了绝大多数场景,实际使用时请结合达梦数据库的具体版本(如DM8)官方文档和您的业务数据特征进行最终决定。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 1:37:57

GetQzonehistory终极指南:一键完整备份QQ空间所有历史记录

GetQzonehistory终极指南:一键完整备份QQ空间所有历史记录 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经担心QQ空间里那些珍贵的青春回忆会随着时间流逝而消失&…

作者头像 李华
网站建设 2026/9/21 7:02:40

CowabungaLite终极指南:解锁iOS 15+设备自定义核心功能

CowabungaLite终极指南:解锁iOS 15设备自定义核心功能 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite CowabungaLite是一款专为iOS 15及以上系统设计的强大自定义工具箱&#xff…

作者头像 李华
网站建设 2026/9/21 21:59:48

XXMI启动器:多游戏模型导入器管理工具完整指南

XXMI启动器:多游戏模型导入器管理工具完整指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器作为一款专业的多游戏模型导入器管理平台,为玩家…

作者头像 李华
网站建设 2026/9/21 22:17:23

GetQzonehistory:一键导出QQ空间完整历史记录,永久保存青春回忆

GetQzonehistory:一键导出QQ空间完整历史记录,永久保存青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心QQ空间里的珍贵说说会随着时间流逝而消失…

作者头像 李华
网站建设 2026/9/21 21:16:21

iOS个性化定制工具箱:Cowabunga Lite深度使用指南

iOS个性化定制工具箱:Cowabunga Lite深度使用指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite 你是否也曾对着千篇一律的iOS界面感到审美疲劳?想要打造专属设备却担…

作者头像 李华
网站建设 2026/9/22 1:38:22

Jasminum插件:3步搞定知网文献元数据抓取的完整指南

作为Zotero生态系统中备受推崇的中文文献管理插件,Jasminum通过智能化的知网元数据抓取功能,彻底解决了中文文献管理的核心痛点。这款免费的插件让学术研究者能够快速、准确地获取中文文献信息,极大地提升了文献管理效率。 【免费下载链接】j…

作者头像 李华