设置指定数据库的sql_mode

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 V7.1.1
【遇到的问题:问题现象及影响】
运行中的tidb集群,现在有几十个数据库,我想只修改2个指定数据库的sql_mode,请问如何操作

不支持针对指定的数据库指定sql_mode吧,
TiDB 支持在会话或全局作用域上修改 sql_mode 系统变量。

  • 对全局作用域变量的修改,设置后将作用于集群中的其它服务器,并且重启后更改依然有效。因此,你无需在每台 TiDB 服务器上都更改 sql_mode 的值。
  • 对会话作用域变量的修改,设置后只影响当前会话,重启后更改消失

这个不是数据库的参数。
在tidb server层,会话级或全局级配置 sql_mode

全局的,不支持,你这种只看考虑拆分了

我是MySQLer。里面有几十种数据库,每个数据库其实是不同的应用在用吧?独立使用自己的jdbc串吧? sql_mode 是可以session级别的。用jdbc来解决即可。

参考例子:
String url = “jdbc:mysql://localhost:3306/yourDatabase?sessionVariables=sql_mode=‘’&user=yourUsername&password=yourPassword”;

1 个赞

这种办法不错

sql_mode是session或global级别的, 你说的这种应该没法实现吧

系统变量最低都是session级别的。。。没有库级别的。。。

开发自己去设置session级别吧

:thinking:这个办法应该是最好的解决方案了

可以设置session级别,或者用前端开发实现。

好的,非常感谢。已经让开发那边去试试了

好的,开发那边想让设置成用户或者指定库级别

估计他们也不会

前端开发?

好像是不支持的

如何拆分?

就是不同sql_mode 拆分不同tidb 集群,或者其他数据库

找一个jdbc类似的客户端测试一下,把sql_mode加到连接配置里试试,看能否成功

没那么多集群,而且这样感觉也不太合理。sql_mode少了还可以,如果模式多了得多少个集群啊