检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
使用DRS将MySQL数据库迁移到GaussDB 操作场景 本章主要介绍如何使用DRS的实时同步功能将本地MySQL数据库实时迁移至华为云GaussDB。通过全量+增量同步,实现源数据库MySQL与目标数据库GaussDB的数据长期同步。 步骤一:创建VPC和安全组 步骤二:创建GaussDB实例
非保留关键字(不能是函数或类型),在MySQL中为保留关键字,其差异为:在M-Compatibility模式下可作为表名、列名、列别名、AS列别名、AS表别名、表别名和变量名,在MySQL中不支持。 当关键字在M-Compatibility模式下为非保留关键字(不能是函数或类型)
非保留关键字(不能是函数或类型),在MySQL中为保留关键字,其差异为:在M-Compatibility模式下可作为表名、列名、列别名、AS列别名、AS表别名、表别名和变量名,在MySQL中不支持。 当关键字在M-Compatibility模式下为非保留关键字(不能是函数或类型)
为什么查询中无法识别表名或者列名? 答:无法识别名称最常见的原因是创建过程中表名或者列名使用了双引号引入了大小写。使用双引号时,表名和列名(称为标识符)在存储是区分大小写的,所以在查询时必须使用双引号且大小写需要与创建时匹配。因为某些接口或应用程序在创建时会自动引入双引号,所以建议创建时统一使用小写。示例:
为什么查询中无法识别表名或者列名? 答:无法识别名称最常见的原因是创建过程中表名或者列名使用了双引号引入了大小写。使用双引号时,表名和列名(称为标识符)在存储是区分大小写的,所以在查询时必须使用双引号且大小写需要与创建时匹配。因为某些接口或应用程序在创建时会自动引入双引号,所以建议创建时统一使用小写。示例:
对于时间函数,处理入参时会将所有非数字字符视作分隔符,然后根据数字所处的位置进行计算,推荐使用标准写法,年月日之间使用-分隔符,时分秒之间使用:分隔符,毫秒之前通过.来进行分隔。 易错场景:在MySQL兼容性MySQL模式数据库中执行“SELECT timestampdiff(hour, '2020-03-01
作为函数/存储过程出入参、返回值时,MySQL支持功能、GaussDB语法不报错功能不支持。 GaussDB数据库和MySQL数据库整数类型具体差异请参见表1。 表1 整数类型 MySQL数据库 GaussDB数据库 差异 BOOL 支持,存在差异 MySQL:BOOL/BOOLEAN类型实际映射为TINYINT类型。
在MySQL中Database和Schema是同义词;而在GaussDB中,一个Database 下可以有多个Schema。在该特性中,每个MySQL中的Database都被映射到GaussDB的一个Schema。 在MySQL中,INDEX从属于一个TABLE,但在GaussDB
等,不建议混合使用分隔符,建议使用最常用的“-”、“/”作为分隔符。 无分隔符:推荐使用完整格式,如 'YYYYMMDD' 或者 'YYMMDD'。其他不完整的格式(包括超长格式)解析的规则与MySQL存在差异,可能报错或者解析的结果与MySQL不一致,不推荐使用。 输出格式 G
SOME、USER 不可以作为任意数据库标识符。 GaussDB优化器与MySQL的优化器存在差异,由于优化器生成的执行计划的差异,可能导致GaussDB行为与MySQL行为的不一致,不影响业务数据结果。 例如在下述场景中,GaussDB在计算col1以及使用col1进行wher
对于时间函数,处理入参时会将所有非数字字符视作分隔符,然后根据数字所处的位置进行计算,推荐使用标准写法,年月日之间使用-分隔符,时分秒之间使用:分隔符,毫秒之前通过.来进行分隔。 易错场景:在MySQL兼容性B模式数据库中执行“SELECT timestampdiff(hour, '2020-03-01
SOME、USER 不可以作为任意数据库标识符。 GaussDB优化器与MySQL的优化器存在差异,由于优化器生成的执行计划的差异,可能导致GaussDB行为与MySQL行为的不一致,不影响业务数据结果。 例如在下述场景中,GaussDB在计算col1以及使用col1进行wher
操作符 GaussDB数据库兼容绝大多数MySQL的操作符,但存在部分差异。除特别说明外,MySQL兼容性MySQL模式中的操作符行为默认为GaussDB原生行为。 表1 操作符 MySQL数据库 GaussDB数据库 差异 安全等于(<=>) 支持 - [NOT] REGEXP
GaussDB数据库兼容绝大多数MySQL的表达式,但存在部分差异。如未列出,表达式行为默认为GaussDB原生行为。 表1 表达式 MySQL数据库 GaussDB数据库 用户自定义变量@var_name 部分支持 全局变量@@var_name 部分支持 父主题: MySQL兼容性B模式
精度确定:以表达式中的最大精度作为最终结果。 从以上规则可知:GaussDB和MySQL数据库在数据类型的转换规则上有很大差异,不能直接对比。在上述场景下,SQL语句的执行结果可能和MySQL数据库不一致。当前版本推荐各个表达式使用相同的类型,或提前使用cast转换成需要的类型来规避差异。
JDBC接口参考 GaussDB与MySQL的JDBC接口定义一致,均遵循业界规范,本章节主要介绍GaussDB数据库的MySQL兼容性B模式与MySQL数据库JDBC接口的行为差异。 获取结果集中的数据 ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用
partitions nodegroup M-Compatibility中不支持该字段。 视图中对于整型的类型回显,不支持指定精度范围。如MySQL的bigint(1),M-Compatibility下对应的是bigint类型,MySQL中bigint(21) unsigned,在M-Compatibility下对应的是bigint
partitions nodegroup M-Compatibility中不支持该字段。 视图中对于整型的类型回显,不支持指定精度范围。如MySQL的bigint(1),M-Compatibility下对应的是bigint类型,MySQL中bigint(21) unsigned,在M-Compatibility下对应的是bigint
系统函数兼容性概述 GaussDB数据库兼容绝大多数MySQL的系统函数,但存在部分差异。 除特别说明外,MySQL兼容性MySQL模式中的函数行为默认为GaussDB原生行为。 GaussDB MySQL兼容性的绝大部分系统函数目前均存在返回值与MySQL精度不一致(结果后面0的位数
并行线程预留的缓存值也只在其线程中使用,未完全使用完毕的话,也会出现表中自动增长列的值不连续的情况。并行插入产生的自增值结果无法保证与MySQL完全一致。 SERIAL数据类型为原有的自增列,与AUTO_INCREMENT自增列有差异。MySQL的SERIAL数据类型就是AUTO_INCREMENT自增列。