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`&amp;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数据库将会不识别。

本文档来自—microbee-http 丨 软件开发框架平台