本帖最后由 super_qjl 于 2025-11-7 17:47 编辑
DM8配置迁移及常见问题1安装配置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以取消兼容。重启数据库服务后,参数修改方能生效。 2数据迁移1)迁移使用工具为SQLark;迁移前需要勾选以下所有项
2)默认值:('yyy-mm-dd')==>CURRENT_TIMESTAMP double类型数据需要重新定义字段类型 3)alter 字段int改varchar报错、text改varchar报错、varchar改double、float、int等报错(int、double、float、text不需要定义长度手动修改表结构后继续迁移即可)。 3项目配置service.conf 内容: <pm name="dbtype">dm</pm> dbtype 全部小写 (mysql,dm) <pm name="dburl">jdbc:dm://175.25.56.246:30236?schema=`UDSO`&clobAsString=1</pm>schema指定数据库 ;clobAsString解决text类型不能直接获取 <pmname="dbdriver">dm.jdbc.driver.DmDriver</pm> DM8驱动
<pm name="dbuser">UDSO</pm>
<pm name="dbpassword">Niuniu8$!!</pm> 4 其他差异4.1配置差异1)问题DM数据库中 text类型不能解析 解决方法1:手动修改text类型为LONGVARCHAR(推荐) 解决方法2:service.conf 文件dburl的配置项中添加&clobAsString=1; 4.2 控制层差异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-ddHH:mm:ss"); 4)控制层编写sql给字段启别名时,当别名为数据库关键字时默认返回大写。例:selectcount(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 '%"+变量+"%'" 4.3 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 4.4 web前端传值差异1)前端传值时Int,float,double,datatime等字段严格遵循字符大意,不能在传值或者拼接字符串前后添加空格,DM数据库将会不识别。
|