前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jdbc连接中设置会话级别参数

jdbc连接中设置会话级别参数

作者头像
保持热爱奔赴山海
发布2022-05-09 14:44:45
1.7K0
发布2022-05-09 14:44:45
举报
文章被收录于专栏:饮水机管理员饮水机管理员

背景: 某个老的服务,之前是在sql_mode非严格模式下开发的,group by写法是非标的。 

最近要迁移了,DBA这边分配的数据库是高版本的,并且设置了global级别的严格的sql_mode(only_full_group_by等等参数)。

这样的话, 服务运行过程中遇到group by非标写法就直接报错了。那么,我们有下面几种解决方法:

1、改代码。 老系统基本没啥人在维护和使用了,新接手的开发人员改起来需要点时间,需要考虑投入和产出的性价比。

2、改数据库的sql_mode。但是这个数据库并不是一个服务独享的,如果暴力的改了数据库级别的sql_mode,担心影响到其它服务的运行结果。

3、改会话级别的sql_mode,只对当前服务生效,不影响连接该数据库上的其它服务

显而易见,方法3是最稳妥最简便的。

java连接串的写法也很简单,如下demo:

jdbc:mysql://192.168.11.111/sbtest?sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

通常,我们看到jdbc连接串的示例中还会设置的有: 1、时区 2、字符集 ,这里我们没写上去,大家自己实际测试下如何拼接吧。

实际上还有很多的可配置项(例如 连接超时、查询超时、开启压缩、开启profilesql、自动explainSlowQueries),具体可以看下面的官方文档。

官方文档: 

​https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html​

​https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-session.html​

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档