MySQL迁移达梦DM8实战

文章目录 收缩

准备

在迁移前,先在本地数据库新建一个空库,并将要迁移到达梦数据库的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('男','女')

这种类型的字段需要改为

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

新建达梦数据库用户

新建表空间

使用SYSDBA用户登录DM管理工具,新建两个表空间:TEST_DATATEST_IDX,分别用于存储表和索引。

新建用户

新建管理用户,选择刚创建的两个表空间,密码长度至少为9位。

所属角色,勾选PUBLIC

勾选需要的权限

新建用户后,将出现同名的模式。

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

使用DM数据迁移工具

  • 新建迁移工程,选择迁移方式
  • 选择目的模式,勾选保持对象名大小写

注意事项

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

varchar长度说明

发表评论

电子邮件地址不会被公开。 必填项已用*标注