光?在我没有要求的情况下强制使用严格模式

问题描述 投票:0回答:0

多年来,我们在内部开发了一个自定义的 Java JDBC 连接池类和一个旧的 MariaDB JDBC 类。

最近,我们开始在内部测试升级,包括:

  • Hikari Pooling 课程
  • AWS JDBC 类(基于 Connector/J,带有故障转移扩展)

我们遇到了一个大问题。从历史上看,我们关闭了严格模式,因为成千上万的遗留程序无视数据截断。

当我打开 JDBC 驱动程序调试时,令我惊讶的是我发现了这个:

[15:34:35.219] /* conn id 237527 时钟:1679340875219 / SET sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'; [15:34:35.228] / conn id 237524 clock: 1679340875228 */ SET autocommit=1;

所以发生的事情是,STRICT_TRANS_TABLES 在连接时被打开,即使我们既没有请求也没有期望。

我在谷歌搜索的 Hikari、AWS 或 Connector J 文档中找不到任何提及 - 究竟为什么会发生这种情况 - 当然我们的应用程序不会要求这样做。

一个线索是这只发生在 Hikari 身上。当我们停止使用 Hikari 并回到我们自己的游泳池时,它就停止了。然而,我在 Hikari 文档中找不到任何关于设置 sql_mode 的内容。

当我们恢复到我们自己的池类时,这种行为就会停止。

当我们停止使用 Hikari 时,这种行为就会停止。

我们在 Hikari 文档中找不到 sql_mode 或如何设置/防止更改的提及。

mysql jdbc mysql-connector hikaricp
© www.soinside.com 2019 - 2024. All rights reserved.