检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
除特别说明外,MySQL兼容性M-Compatibility模式中的数据类型精度、标度、位数大小等默认不支持用浮点型数值定义,建议使用合法的整型数值定义。 表1 整数类型 MySQL数据库 GaussDB数据库 差异 BOOL 支持,存在差异 输出格式:GaussDB中SELECT
JSON数据类型 MySQL数据库 GaussDB数据库 差异 JSON 支持,存在差异 GaussDB数据库MySQL兼容性B模式中的JSON类型与GaussDB数据库原生的JSON类型行为一致,与MySQL行为差异较大,此处不再逐个列出。 GaussDB数据库MySQL兼容性B模式
TERMINATED BY 'string']指定换行符不能与[LINES TERMINATED BY 'string']分隔符相同。 执行LOAD DATA语法写入表中的数据若无法转换为表中数据类型格式时报错。 LOAD DATA SET表达式中不支持指定列名计算。 若set表达式返回值类型与对应列类型之间不存在隐式转换函数则报错。
DB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中LONGTEXT类型不支持主键,GaussDB支持。 索引:MySQL中LONGTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 外键:MySQL中TINYTEXT类型
精度确定:以表达式中的最大精度作为最终结果。 从以上规则可知:GaussDB和MySQL数据库在数据类型的转换规则上有很大差异,不能直接对比。在上述场景下,SQL语句的执行结果可能和MySQL数据库不一致。当前版本推荐各个表达式使用相同的类型,或提前使用cast转换成需要的类型来规避差异。
其他函数 表1 其他函数列表 MySQL数据库 GaussDB数据库 差异 UUID() 支持 - UUID_SHORT() 支持 - 父主题: 系统函数
加密函数 表1 加密函数列表 MySQL数据库 GaussDB数据库 差异 AES_DECRYPT() 支持 - AES_ENCRYPT() 支持 - 父主题: 系统函数
ZEROFILL 支持 使用CREATE TABLE AS方式建表,对VARBINARY类型的字段设置默认值,在使用SHOW CREATE TABLE、DESC或\d 查询的时候回显与MySQL存在差异,GaussDB显示为转换成十六进制后的值,而MySQL显示为原值。 示例: m_db=#
默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TINYBLOB类型不支持主键,GaussDB支持。 索引:MySQL中TINYBLOB类型不
强制转换函数 表1 强制转换函数列表 MySQL数据库 GaussDB数据库 差异 CAST() 支持,存在差异 数据类型转换规则和支持的转换类型均以GaussDB支持的转换范围和规则为准。 CONVERT() 支持,存在差异 数据类型转换规则和支持的转换类型均以GaussDB支持的转换范围和规则为准。
持表内多种字符集混合使用。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致。 使用latin1字符序需要设置兼容性参数m_format_dev_version = 's2'。 表1 排序规则列表 MySQL数据库 GaussDB数据库
默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串时,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TINYBLOB类型不支持主键,GaussDB支持。 索引:MySQL中TINYBLOB类型不
“~”:GaussDB返回负数,MySQL返回8字节无符号整数。 “^”:GaussDB表示次方幂,MySQL表示按位异或。 TINYTEXT 支持,存在差异 输入格式 GaussDB中该类型的长度不能超过1GB,超过长度限制后会报错。MySQL中该类型不能超过255字节,超过长度限制
MySQL兼容性MySQL模式 数据类型 系统函数 操作符 字符集 排序规则 SQL 驱动
驱动 JDBC 父主题: MySQL兼容性MySQL模式
精度传递开关关闭的情况下,也即m_format_behavior_compat_options中的enable_precision_decimal未设置时,PI函数的返回值精度与MySQL的有差异:MySQL中PI函数的结果仅保留四舍五入之后的小数后6位,而GaussDB的结果会保留四舍五入之后的小数后15位。
SLEEP() 支持,存在差异 调用SLEEP函数的过程中,若使用Ctrl+C提前结束调用,GaussDB只显示Cancel request sent信息,与MySQL显示不一致。 除上述情况外,当SLEEP函数在其他SQL语句中被调用时,使用Ctrl+C提前结束语句,若操作恰好被SLEE
查询默认值。 GaussDB支持查询列名包含字符串值节点(表示名称)和A_Star节点(表示出现“*”),如default(tt.t4.id)和default(tt.t4.*)。不合法的查询列名和A_Star节点,GaussDB和MySQL报错信息有差异。 GaussDB创建字段
ZEROFILL 支持 使用CREATE TABLE AS方式建表,对VARBINARY类型的字段设置默认值,在使用SHOW CREATE TABLE、DESC或\d 查询的时候回显与MySQL存在差异,GaussDB显示为转换成十六进制后的值,而MySQL显示为原值。 示例: m_db=#
SELECT、USAGE、UPDATE、ALTER、DROP、COMMENT MySQL中通过'dbname.*'表示模式层级的授权对象;在M-Compatibility中,使用'{DATABASE | SCHEMA} dbname'表示模式层级的授权对象。 MySQL中用户名为两部分:用户名@主机名;M-Compatibility当前仅支持用户名。