MySQL迁移GaussDB T需要转换的语法1【转】
------转注:本文来自2019-7-3之前的迁移经验,因版本迭代周期为3个月,个别项目可能已经发生变化,请读者自行验证,欢迎把验证结果反馈。
(1)不支持create database和use database语句,需要删除
(2)不支持ENGINE=InnoDB 及其他 ENGINE= ***,需要删除
(3)不支持int(10), bigint(10),需要转换为 integer, bigint.
(4)sql语句单行不能超过65536个字符,如果超过,需要换行
(5)去掉表名、列名等对象上的反引号`或引号,否则表名会区分大小写,使用的时候也必须加反引号`或引号。Zenith是通过将sql中的对象名转换成大写来实现不区分大小的功能的,如果加了反引号或引号将会原样保存,使用的时候也得加反引号或引号,否则会被自动转成大写,导致对象名不匹配。
(6)不支持字符集:latin1, gb2312 ,需要转换为utf8
(7)唯一约束:不支持UNIQUE KEY 约束名字 (列名)写法 ,需要转换为:UNIQUE (`列名`) 或者 CONSTRAINT 约束名字 UNIQUE (列名)
(8)longtext/text 类型不支持设置字符集,也不支持建立索引
content longtext CHARACTER SET gbk 需要转换为: content longtext
(9)varchar类型如果要存汉字,则需要将长度*4,长度超过8000则需要改为text/clob类型
(10)不支持表级别注释 COMMENT='注释信息 ' ,需要删除表注释,但列注释支持。
(11)列名不能取GaussDB关键字,否则报错:
关键字有:user 、group 、case 等
(12)insert插入数据时,字符列字段只允许用单引号 '***',不支持双引号"***",例如:insert into test values('sdf'); 不支持的写法:insert into test values("sdf");
(13)insert插入数据时,如果插入的字符串有单引号',需要转换为双引号",或者用两个单引号("),不支持\',
例如:mysql语法:insert into test values('name=\'test\'***');
需要转换为 Gaussdb语法:insert into test values(' name=''test''***');
或者 insert into test values(' name=“test”***f ');
(14)不支持PACK_KEYS,需要删除
(15)建议删除sql文件的注释,否则可能报错
(16)创建索引:不支持 KEY 表名 (列名) 写法
需要在表外面创建:create index 索引名 on 表名 (列名) online;
- 点赞
- 收藏
- 关注作者
评论(0)