云数据库 GAUSSDB-平台和客户端兼容性:sql_mode
sql_mode
参数说明:B兼容模式下和M-Compatibility模式下SQL行为控制配置项。该参数可在PDB级别设置。
- 当sql_compatibility兼容性参数设置为B、b_format_version设置为'5.7'、b_format_dev_version设置为's1'时,sql_mode才会生效;或者sql_compatibility兼容性参数设置为M时生效。
- 使用SHOW sql_mode和SELECT @@sql_mode进行查询时,会依据REAL_AS_FLOAT、ANSI_QUOTES、ONLY_FULL_GROUP_BY、NO_UNSIGNED_SUBTRACTION、NO_AUTO_VALUE_ON_ZERO、NO_BACKSLASH_ESCAPES、STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ALLOW_INVALID_DATES、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION及PAD_CHAR_TO_FULL_LENGTH的顺序,大写显示,不因设置时的顺序与大小写而改变。
参数类型:字符串
参数单位:无
取值范围:
- B模式:空字符串""或"strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution,pad_char_to_full_length,no_auto_value_on_zero"中的选项值。
- M-Compatibility模式:除支持B模式参数外,还新增了no_unsigned_subtraction、ansi_quotes、allow_invalid_dates、real_as_float、strict_all_tables、traditional。
每个选项值的含义如表9所述。
兼容性配置项 |
兼容性行为控制 |
B模式参数配置说明 |
M-Compatibility模式参数配置说明 |
---|---|---|---|
strict_trans_tables |
设置时,对输入的参数格式和范围做严格校验。无效值输入或者超过范围时,解析报error。 不设置时,对输入的参数格式和范围做宽松校验,无效值输入或者超过范围时,解析报warning,返回对应数据的0值。 |
可独立设置和取消。 |
可独立设置和取消。 |
only_full_group_by |
不允许出现非GROUP BY的key值、且不是常量和聚集函数的投影列。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
no_zero_in_date |
不允许日期中的年、月、日是0值。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
no_zero_date |
不允许日期是0值(0000-00-00)。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
error_for_division_by_zero |
不允许被0除。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
no_auto_create_user |
无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 |
可独立设置和取消。 |
可独立设置和取消。 |
no_engine_substitution |
无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 |
可独立设置和取消。 |
可独立设置和取消。 |
pad_char_to_full_length |
用于表中的char类型列格式化输出,包含时输出带有尾部空格的字符串,否则输出不带尾部空格字符串。 |
可独立设置和取消。 |
可独立设置和取消。 |
no_auto_value_on_zero |
包含此选项后,向AUTO_INCREMENT自动增长列插入0值将不会自增。 |
可独立设置和取消。 |
可独立设置和取消。 |
no_unsigned_subtraction |
禁止无符号数减法,如果使用无符号整数进行减法操作,且结果为负数,则会返回一个错误。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
ansi_quotes |
启用ANSI_QUOTES模式,该模式下双引号被视为标识符引用符号,而不是字符串引用符号。在该模式下,如果使用双引号引用表名或列名,则必须使用双引号引用整个名称,而不能使用反引号。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
allow_invalid_dates |
允许插入无效日期,如果启用该选项,则MySQL将允许插入无效的日期,例如'0000-00-00'。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
real_as_float |
默认将REAL类型视为DOUBLE类型,如果启用该选项,则将REAL类型视为FLOAT类型。 |
可独立设置和取消,但无实际作用。 |
可独立设置和取消。 |
strict_all_tables |
与strict_trans_tables效果一致。 |
可独立设置和取消。 |
可独立设置和取消。 |
traditional |
与同时设置strict_trans_tables、strict_all_tables、no_zero_in_date、no_zero_date,error_for_division_by_zero、no_auto_create_user和no_engine_substitution效果一致。 |
可独立设置和取消。
说明:
具体是否生效取决于B兼容模式是否支持。 |
可独立设置和取消。 |
默认值:"strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution"。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
- GaussDB学习_gaussdb教程_高斯数据库学习_华为云
- GaussDB考试_GaussDB数据库考试_高斯数据库考试_华为云
- GaussDB培训_GaussDB教程_高斯数据库培训-华为云
- GaussDB用法_GaussDB数据库使用方法_高斯数据库如何使用_华为云
- GaussDB数据库概念_openGauss_华为高斯数据库概念
- GaussDB数据库考试_GaussDB认证_高斯数据库考试_华为云
- GaussDB学习_gaussdb数据库_高斯数据库学习_华为云
- GaussDB使用技巧_高斯数据库下载_高斯数据库使用技巧_华为云
- GaussDB工具_gaussdb怎么读_高斯数据库工具_华为云
- GaussDB数据库安全_GaussDB收费吗_高斯数据库安全