MySQL迁移至DM8常见适配问题
驱动下载及DEM工具使用指导
DM数据库兼容性设置
请在迁移数据之前,将DM数据库参数调整为兼容MySQL数据库,可参考下列措施:
- 在实例指定的配置文件“dm.ini”中修改参数COMPATIBLE_MODE=4。
- 使用语句ALTER SYSTEM SET 'COMPATIBLE_MODE'=4 SPFILE;修改,修改后重启数据库服务使其生效。
DM数据库字符编码设置
MySQL建表默认的字符编码是UTF8_GENERAL_CI(不区分大小写),所以建议在MySQL迁移到DM时,将达梦数据库设置成大小写不敏感。可参考下列措施:
- 请在初始实例时,设置大小写敏感参数为不敏感(CASE_SENSITIVE=0),注意该设置一旦确定无法修改。
- 若在初始化实例时设置了大小写敏感(CASE_SENSITIVE=1),请在使用DEM工具迁移的时候,去掉“保持对象名大小写”的勾选。
中文字符存储设置
MySQL中varchar类型在5.0.3版本及以上按字符存储,varchar(1)存储一个汉字;DM默认以字节存储,varchar(3)存储一个汉字。MySQL5.0.3及以上版本迁移到DM中,可能会发生字符截断的问题。若表中包含中文字符,可参考下列措施:
- 扩大字段长度,例MySQL表中字段长度为10,DM建表时需要将字段长度扩大为30。
- 重新初始化实例,设置参数VARCHAR类型对象的长度以字符为单位(LENGTH_IN_CHAR=1)。
系统保留字配置
当在DM中创建表等对象时,出现“语法分析出错”报错,可能是因为使用的对象名为系统保留字。请通过SQL语句SELECT * FROM V$RESERVED_WORDS WHERE RESERVED='Y' AND KEYWORD=对象名称;,查询该对象名是否为保留字,若是,可参考下列措施:
- 使用双引号包裹对象名称,并在查询时使用引号。
- (推荐)配置客户端dm_svc.conf文件,在对应数据库的服务配置区,添加KEYWORDS配置屏蔽关键字:KEYWORDS=对象名称。
- 修改使用到系统关键字相关的SQL语句和对象名称。
DM数据库int类型不能设置数据精度
在DM数据库中int类型不能设置数据精度。请核查表中字段定义中的int类型是否有精度,如果有请去除精度,例如:create table test1(v1 int(10),v2 varchar(20));需要更改成create table test1(v1 int,v2 varchar(20));。
时间类型TIMESTAMP设置
MySQL中时间类型TIMESTAMP默认设置为“0000-00-00 00:00:00”,在DM中必须在“0001-01-01 00:00:00.000000”到“9999-12-31 23:59:59.999999”之间。若在迁移过程中遇到TIMESTAMP类型为“0000-00-00 00:00:00”报错,请将其修改为有效的日期类型。
DM数据库单双引号使用
DM中区分单双引号使用,双引号用于关键字、对象名、字段名、别名等,单引号用于字符串常量。对于字段的default设置,默认的字符或字符串默认值,需要添加单引号,如char(10)default 'abc'。