迁移过程
项目数据库从达梦数据库迁移到mysql,不迁移数据,只迁移表结构。当中通过调试踩了不少坑,把迁移过程记录一下。
一、 在达梦新建数据库
利用达梦数据管理工具新建一个数据库,运行项目sql文件
二、 利用DM数据迁移工具迁移
用sqlyog连接mysql数据库,新建数据库tyqx-test。利用DM数据迁移工具,从DM迁移到mysql。其中表中的datetime类型迁移到mysql会默认映射为timestamp,把所有的timestamp类型数据改为datetime(6),默认值为CURRENT_TIMESTAMP(6),注意时间精度,如果只填datetime默认只精确到秒,涉及时间排序的时候精度会受到影响,6意味着小数点后六位。其中的longvarchar字段会自动映射为longtext,改为text字段。默认导出后不带字段的注释,需要自己添加上注释。
三、 导出sql
在连接工具中导出建表sql语句。作为建表sql---create.sql。
修改项目原项目中的修改sql的语句。差异主要在于:
去除表名和列名的双引号,然后所有涉及mysql关键字的列名,例如order、sql加上反引号。
四、 修改所有实体类关键词字段
修改实体类设计mysql关键字的字段的@Tablefield,order、sql等,加上反引号。
五、 修改mapper.xml语句
项目中用到mybatis框架,检查mapper.xml中涉及mysql关键字的字段,例如order、sql、path,加上反引号。
去除msql不支持的tochar等函数。
去除所有insert语句列名的双引号。
六、 时间检索问题
“yyyy-MM-dd “模式的时间检索(例如2021-12-01),达梦检索小于”2021-12-01“时,不包括当天的数据,mysql检索时包括当天数据。之前的处理是把endTime+1天在达梦中检索,换到mysql会导致查询出后一天的数据。在Mysql中把涉及到时间的查询,加上”00:00:00”和”23:59:59”提高时间精度进行查询,不需要将endTime加一天。如果不提高精度。Mysql检索大于等于”2021-12-01”且小于等于”2021-12-01”无法检索出当天的数据。