繁体   English   中英

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

[英]How do I set SQL mode in the JDBC connection string for MySQL 8?

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

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

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

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

在 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=''

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

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

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

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

事实上,设置jdbcCompliantTruncation=false<\/code>对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM