云数据库 GAUSSDB-平台和客户端兼容性:sql_mode

时间:2024-12-19 14:11:21

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所述。

表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中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0365.html