【 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级别吧
这个办法应该是最好的解决方案了
可以设置session级别,或者用前端开发实现。
好的,非常感谢。已经让开发那边去试试了
好的,开发那边想让设置成用户或者指定库级别
估计他们也不会
前端开发?
好像是不支持的
如何拆分?
就是不同sql_mode 拆分不同tidb 集群,或者其他数据库
找一个jdbc类似的客户端测试一下,把sql_mode加到连接配置里试试,看能否成功
没那么多集群,而且这样感觉也不太合理。sql_mode少了还可以,如果模式多了得多少个集群啊