前面两篇文章,介绍了一些迁移前的准备工做,实现了数据的导入,可是当我将数据导入到DM后,启动了本身的项目,接下来一堆报错接踵而至,总结了一些常见的报错,在这里作个记录。前端
达梦数据库的关键字是双引号(""),而mysql的关键字是反引号(``),因此一些sql的字段加了关键字的,只能作下替换。
此次替换其实后来发现替换的地方还挺多的,究其缘由,仍是在设计MYSQL表字段的时候,起名字不规范引发的,用了一些关键字作了字段名,如key、code等字段名。
真是偷懒一时爽,改起来火葬场java
mybatis在咱们开启了以下配置mysql
mapUnderscoreToCamelCase:true
后,在mabatis的mapper文件写了以下sql后:sql
<select id="queryDeviceByPage" resultType="map" parameterType="map"> select t1.id as id, t1.work_id as workId, t1.work_ip as workIp, t1.work_moudle workMoudle from xxx t1 </select>
发现并无在前端转成驼峰命名,而是变成了一堆小写,究其缘由,仍是达梦数据库的Driver和mysql的Driver实现有点差异,感兴趣能够去研究源码,将sql改成以下内容便可:数据库
select t1.id as id, t1.work_id as work_id, t1.work_ip as work_ip, t1.work_moudle work_moudle from xxx t1
建议mapper文件使用resultMap实体映射bash
mysql当中有些函数达梦是不适用的,须要作些适配mybatis
我的以为,数据库是提供了一些比较方便的函数,可是若是项目为了兼容性更强,或者强依赖索引,仍是在业务层处理比较好。app
实体类添加以下:函数
@TableField("\"logic\"") private String logic;
text字段没法distinct,group by,order by,建议改成varchar设计
将上面的问题修改完成后,系统确实能够运行了起来,接下来要思考的就是,如何能够一套代码兼容两个数据库。