【DM版本】: v8
【操作系统】:centos7 docker
【CPU】: Intel® Xeon® CPU E5-2680 v4 @ 2.40GHz
【问题描述】*:
1、使用官网的docker镜像,启动容器时不知道怎么指定字符集
2、旧数据库mysql采用的字符集是utf8mb4,如何正确迁移到dm中
3、mysql中varchar(100)字段中存放了100位中文字符,如何迁移到dm中(之前的尝试,一直报"长度超出定义"错误)
4、迁移时,将所有库名、表名、字段名都转为了大写,开发中实测可以不用双引号括住表名和字段名,但是表名前面是否一定要加【“库名”.】
1、建议适配测试的话可以考虑使用通用软件安装包进行安装并初始化实例。docker的话可能要联系下当前区域达梦技术支持。
2、mysql utf8mb4字符集的话,达梦这边对应的是UTF8字符集。在初始化实例的时候指定
3、mysql中varchar默认单位是字符,达梦默认是字节,需要在达梦数据库初始化的时候设置初始化参数LENGTH_IN_CHAR=1 (图形界面勾选VARCHAR类型长度是否以字符为单位)。
4、第一个问题:使用达梦迁移工具迁移时,在选择指定复制对象那个步骤勾选右上角“保持对象名大小写”。第二个问题:在达梦数据库中创建业务用户,然后将mysql中对应数据库迁移到创建的业务用户的默认模式下,也是在选择指定复制对象那里,“目的模式”选择创建的业务用户默认模式(默认模式与用户名相同),这样直接使用业务用户连接数据库操作表等 都不需要指定模式名或者“库名”。
另外,达梦数据库在初始化时,可以指定初始化参数为页大小32,字符集UTF8,VARCHAR类型长度以字符为单位,大小写不敏感
迁移的时候只要保证旧mysql和达梦的字符集一样就不会有问题,如果长度超出定义,你把达梦表字段的长度扩大一点就行。
第4点,如果是查自己模式下面的表,可以不用加模式名,如果查其它模式下的表,那么需要加库名