开发一个项目,需要用dm8重构,使用了达梦自带的迁移工具-dm数据迁移工具,安装使用教程参考官网即可。
1.字符乱码问题解决
在迁移的过程中遇到了乱码,经过反复百度,也没有解决,后面经过反思,总结了以下两种情况的解决方案
1.1.一般情况(dm数据库整体乱码情况)
这里参考了
(39条消息) mysql数据库数据迁移达梦数据乱码问题解决_达梦中文乱码_青莲明月的博客-CSDN博客
1.2.特殊情况(部分字符乱码)
这是我重点要讲的,部分字符乱码,一般不是字符编码导致的,而是在创建实例的时候配置问题导致。
具体情况展示:
且修改无效。这就是在创建实例的时候配置问题导致。具体配置参考如图所示:
重点是varchar以字符串为单位,勾选!
然后再迁移数据,就会发现数据正常了,中间也不需要指定驱动了,直接使用默认的驱动即可。
然后数据正常:
2.指定模式问题
一般正常来说,mysql都不需要指定数据库的名称,即可进行查询,但是在使用达梦数据库的时候会发现,sysdba用户在使用其他模式的数据的时候会出现视图或表不存在的问题,解决方案一般有两种,
1.直接修改查询语句加数据库名.表名 :
例如:test.a 其中test代表库名,a代表表名
但是这样会需要改所有用到的sql语句,工作量太大,还有一种方式,可以最小程度修改sql。
2.新增用户:
2.1.创建用户语句:
CREATE TABLESPACE test DATAFILE 'test.DBF' SIZE 128;
CREATE USER test IDENTIFIED BY "sysdba$123" DEFAULT TABLESPACE test;
GRANT RESOURCE TO test;
grant PUBLIC to test;
grant RESOURCE to test;
其中test代表用户名字以及所创建的模式名。
执行结果
刷新用户可以看到刚刚添加的用户,注意,上述语句创建完成以后,使用用户仍然无法访问模式。需要进行下述操作。
2.2.修改权限:
直接使用sysdba用户或其他有权限的用户登录以后,赋予该用户权限:
点击确定,就可以完成配置。
springboot项目连接:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://127.0.0.1:5236/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: test
password: test
附:maven配置
<dependency>
<groupId>com.dameng</groupId>
<artifactId>Dm8JdbcDriver18</artifactId>
<version>8.1.1.49</version>
</dependency>