欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL迁移达梦DM8实战

程序员文章站 2024-03-24 13:51:16
...

准备

在迁移前,先在本地数据库新建一个空库,并将要迁移到达梦数据库的MySQL数据库复制到本地的这个空库中,因为接下来需要修改某些表的设置。

  • CURRENT_TIMESTAMP
    CURRENT_TIMESTAMP是MySQL的函数,达梦不支持该函数,如果使用了这个函数,那么需要修改。
    例如将TABLE_NAME表中的updated_at字段修改为datetime类型,并去掉默认值。
ALTER TABLE `TABLE_NAME` MODIFY COLUMN `updated_at` datetime(0) NULL;
  • 0000-00-00 00:00:00
    如果你的时间字段中有0000-00-00 00:00:00这样的数据,也是无法迁移成功的,可以批量改为1970-01-01 00:00:00

  • 修改char为varchar
    有的字段设置了默认值时,迁移时可能会提示长度不足。
    例如设定了user_sex这个字段为char(1),默认值为,那么需要改为char(3)或者改为varchar(1)

注意:varchar的长度与你初始化数据库时的这两个参数UNICODE_FLAGLENGTH_IN_CHAR相关。

UNICODE_FALG:此参数表示了数据库中所有数据的字符集,包括数据字典的字符集。需要注意的是,数据库一旦初始化完成,字符集就将无法修改。我们可以使用select unicode来查询当前数据库的字符集种类,0代表gb180301代表UTF8

LENGTH_IN_CHAR:此参数决定了,数据库中的varchar类型对象的长度是否以字符为单位。取值为1则设置为以字符为单位,将存储长度值按照理论字符长度进行放大。取值为0则所有varchar类型对象的长度以字节为单位。

  • enum类型
    例如enum('男','女')
    MySQL迁移达梦DM8实战

这种类型的字段需要改为

ALTER TABLE `TABLE_NAME` MODIFY COLUMN `user_sex` varchar(1) DEFAULT '男';

新建达梦数据库用户

新建表空间

使用SYSDBA用户登录DM管理工具,新建两个表空间:TEST_DATATEST_IDX,分别用于存储表和索引。
MySQL迁移达梦DM8实战
MySQL迁移达梦DM8实战

新建用户

新建管理用户,选择刚创建的两个表空间,密码长度至少为9位。
MySQL迁移达梦DM8实战
MySQL迁移达梦DM8实战

所属角色,勾选PUBLIC
MySQL迁移达梦DM8实战

勾选需要的权限
MySQL迁移达梦DM8实战

新建用户后,将出现同名的模式。
MySQL迁移达梦DM8实战

断开连接,使用刚创建的TEST用户登录。

使用DM数据迁移工具

  • 新建迁移工程,选择迁移方式
    MySQL迁移达梦DM8实战

  • 选择目的模式,勾选保持对象名大小写
    MySQL迁移达梦DM8实战

注意事项

当某些表迁移失败时,注意要在达梦中删除表后,再重新迁移。

varchar长度说明

MySQL迁移达梦DM8实战

相关标签: 达梦