6

我最近将我的 MySQL 实例从 5.7 升级到了 8.0。我使用 JDBC 和一个如下所示的连接字符串连接到我的旧实例:

jdbc:mysql://[host:port]/[database]/?sessionVariables=sql_mode=''

升级到 8.0 后导致此错误

com.mysql.cj.exceptions.WrongArgumentException: Malformed database URL, failed to parse the connection string near '='')'.

如何在 MySQL 8 的 JDBC 连接字符串中设置 SQL 模式?

4

4 回答 4

4

这似乎是 MySQL Connector/J 中的一个错误。我为此提出了一个错误报告:

https://bugs.mysql.com/bug.php?id=92485

于 2018-09-18T23:26:40.800 回答
1

在 JDBC 连接字符串中为 MySQL 8.0 试试这个:

jdbc:mysql://[host:port]/[database]/?sessionVariables=&&sql_mode=''

例如

jdbc:mysql://localhost:3306/dbName?sessionVariables=&&sql_mode=''



对于 JDBC 连接字符串中的 MySQL 7.0:

jdbc:mysql://[host:port]/[database]/?sessionVariables=sql_mode=''

例如

jdbc:mysql://localhost:3306/dbName?sessionVariables=sql_mode=''
于 2020-06-25T19:16:57.417 回答
0

我认为这可能是因为 sql_mode 中没有任何内容。

于 2018-04-25T12:08:52.897 回答
0

我在一个旧项目中遇到了同样的问题,并且设置sessionVariables=sql_mode=''在我的情况下不起作用。它完全被忽略了。最后我发现了这个错误报告及其解释:

驱动程序需要启用 STRICT_TRANS_TABLES 模式以强制执行截断检查的 JDBC 合规性。

如果您不能使用 STRICT_TRANS_TABLES 作为 sql_mode 的一部分,那么您必须通过添加“jdbcCompliantTruncation=false”作为 URL 配置参数来禁用截断检查。

确实,设置jdbcCompliantTruncation=false对我有用。

于 2022-02-04T08:58:51.413 回答