DM8配置迁移及常见问题
安装配置
1)安装时注意:PAGE_SIZE页大小为32;CASE_SENSITIVE大小写不敏感为0;EXTENT_SIZE簇大小为32;UNICODE_FLAG字符集选项为UTF-8(本框架为“UTF-8”);
2)按照DM8文档安装完成后,默认登录账号SYSDBA 密码:SYSDBA。
3)通过修改DM数据库DM8的配置文件dm.ini中的COMPATIBLE MODE参数来实现与其他数据库的兼容性。步骤包括使用disq!工具设置参数为4以兼容MySQL,以及直接编辑dm.ini文件将参数设为0以取消兼容。重启数据库服务后,参数修改方能生效。
数据迁移
1)迁移使用工具为SQLark;迁移前需要勾选以下所有项



2)默认值:('yyy-mm-dd')==>CURRENT_TIMESTAMP
double类型数据需要重新定义字段类型
3)alter 字段int改varchar报错、text改varchar报错、varchar改double、float、int等报错(int、double、float、text不需要定义长度手动修改表结构后继续迁移即可)。
项目配置
service.conf 内容:
<pm name="dbtype">dm</pm> dbtype 全部小写 (mysql,dm)
<pm name="dburl">jdbc:dm://127.0.0.1:30236?schema=`UDSO`&clobAsString=1</pm>
schema指定数据库 ;clobAsString解决text类型不能直接获取
<pm name="dbdriver">dm.jdbc.driver.DmDriver</pm> DM8驱动
<pm name="dbuser">UDSO</pm>
<pm name="dbpassword">xxxxxx</pm>
其他差异
配置差异
1)问题DM数据库中 text类型不能解析
解决方法1:手动修改text类型为LONGVARCHAR(推荐)
解决方法2:service.conf 文件dburl的配置项中添加&clobAsString=1;
控制层差异
1)达梦添加和更新的返回key值不同(统一修改为mysql的返回形式)
insert一条数据返回值MySQL为{"GENERATED_KEY":"10075"};DM为{"AUTO_GEN_KEY":"10075"}
update返回值MySQL ,reJson为空返回默认值为{"res":1};DM为reJson为{"AUTO_GEN_KEY":"10065"}
2)使用批量添加在单独的控制器中执行
解决:批量添加占用线程导致其他同控制器内方法不能执行。
3)时间类型问题:json.tojsonstring时时间转为时间戳,解决:
JSON.toJSONStringWithDateFormat(page_list, "yyyy-MM-dd HH:mm:ss");
4)控制层编写sql给字段启别名时,当别名为数据库关键字时默认返回大写。
例:select count(1) as count from xxx; 返回的则是COUNT;若想使用小写需要修改成:select count(1) as "count" from xxx;
5)控制层编写sql:错误形式:sql = ".... where a = ""+变量+"" and name like "%"+变量+"%"";正确形式:sql = ".... where a = '"+变量+"' and name like '%"+变量+"%'"
model层差异
1)解决MySQL中可以添加更新数据,DM不可以更新数据。
解决:框架DataActionsWrapperDM中处理已解决。
2)在model中拼写SQL语句使用IN传值为string时建议修改为 FIND_IN_SET(name,#{names});
3)执行操作表,添加字段及备注时,需先添加字段再执行添加备注sql(两条sql)
例:alter table add xxx int default null;// 添加字段
comment tablename.xxx is ‘xxxxx’; // 添加备注
4)执行操作表,添加字段时,关键字字段名需用双引号或``包裹,否则DM自动转换成大写
例:alter table add comment int default null;数据库显示为COMMENT
alter table add “comment”/ `comment` int default null;数据库显示为comment
web前端传值差异
1)前端传值时Int,float,double,datatime等字段严格遵循字符大意,不能在传值或者拼接字符串前后添加空格,DM数据库将会不识别。
扫一扫