客户端展示 sql_mode 失败 & tidb 参数生效顺序

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:5.7.25-TiDB-v3.0.12
  • 【问题描述】:sql_mode 设置没成功

刚刚在 新建的 TIDB 集群环境(使用docker 创建测试) 建表;发现报错 SQL_MODE,报错如下:

module49_a int(11) DEFAULT NULL, module49_b int(11) DEFAULT NULL, module50_a int(11) DEF 受影响的行: 0 时间: 0.063s

[Err] 1055 - Expression #1 of ORDER BY is not in GROUP BY clause and contains nonaggregated column ‘’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

查看了一下官网 和ASKTUG 上资料 ,语句配置:

1.1.22 sql_mode 默认除了通过命令 set 修改,配置文件怎么修改?

TiDB 的 sql_mode 与 MySQL 的 sql_mode 设置方法有一些差别,TiDB 不支持配置文件配置设置数据库的 sql_mode,而只能使用 set 命令去设置,具体方法为: set @@global.sql_mode = 'STRICT_TRANS_TABLES';

但我操作过程中貌似没生效:

mysql> set @@global.sql_mode = ‘STRICT_TRANS_TABLES’; Query OK, 0 rows affected

mysql> flush privileges; Query OK, 0 rows affected

mysql> mysql> mysql> select version(), @@sql_mode; ±--------------------±-----------+ | version() | @@sql_mode | ±--------------------±-----------+ | 5.7.25-TiDB-v3.0.12 | | ±--------------------±-----------+ 1 row in set

mysql> mysql>

想问一下,具体是如何设置 sql_mode ;

81894771-3C65-4720-A336-12C625EED125

您好: 请尝试新开一个session,查询select @@sql_mode ; 反馈结果,多谢

为啥工具那边没显示出来 :sweat_smile::sweat_smile::sweat_smile::sweat_smile::sweat_smile:

你好,

建议使用命令行操作

黄色的 Navicat 可以换下最新的 15 版本;我这边黄色也是报错呢~

:joy::joy::joy::joy::joy: 好吧,我重新搞个版本!!

:+1:

另外 想问一下 这个类似参数 都通过命令去配置吗 ?没有使用配置文件吗?

你好。

目前 tidb 对各组件的配置文件可以在官网看下,不同部署方式,配置参数的方式不同

可以拿出具体问题,一起讨论下~

tiup 部署: topology.yaml

ansible 部署: config/config.toml.example

OK ,我看一下,多谢了! 另外,是不是命令执行生效的参数 就是永久的 ?还是说TIDB 服务重启后需要重新配置 ?

你好,

如果同时对命令行参数和配置文件中的对应参数进行更改,命令行参数将优先生效

建议使用 ansible 或 tiup 配置文件方式启停 tidb 集群,统一管理参数

搜索 ‘优先生效’ 可以确认: https://book.tidb.io/session2/chapter2/lightning-in-action.html

好的 ,我看一下文档,谢谢!!

:call_me_hand: