MYSQL5.7/MYSQL8.0迁移dm8字符乱码以及指定模式问题笔记总结

开发一个项目,需要用dm8重构,使用了达梦自带的迁移工具-dm数据迁移工具,安装使用教程参考官网即可。

安装前准备 | 达梦技术文档 (dameng.com)

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>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飓廴之莨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值