TiDB官方文档里的java最佳应用实践当中 prepStmtCacheSqlLimit参数的疑问,他默认值是256,我想设置一个2048。然后出现了报错
报错信息:
The connection property ’ `prepStmtCacheSqlLimit’ only accepts integer values. The value ‘2048’ can not be converted to an integer
请问这个值的是按照什么倍数来计算的,为什么2048不可以
TiDB官方文档里的java最佳应用实践当中 prepStmtCacheSqlLimit参数的疑问,他默认值是256,我想设置一个2048。然后出现了报错
报错信息:
The connection property ’ `prepStmtCacheSqlLimit’ only accepts integer values. The value ‘2048’ can not be converted to an integer
请问这个值的是按照什么倍数来计算的,为什么2048不可以
怎么设置的?不会是设置成字符串了吧
prepStmtCacheSqlLimit=2048
就是这么输入的
看错误提示是那样的,难道这里有bug。设置256不报错?
看过有设置1000可以的,就是不知道这个是怎么计算的
简单测试了一下,使用这段代码,在 JDK 17 / 目标 Java 版本 11 / 8.0.29 Driver 版本 / macOS 下无法复现。可以给一下你的复现代码吗?
public class App
{
public static void main( String[] args ) throws SQLException {
String dbUrl = "jdbc:mysql://192.168.31.31:4000/test?user=root&password=&prepStmtCacheSqlLimit=2048";
try (Connection connection = DriverManager.getConnection(dbUrl)) {
ResultSet rs = connection.createStatement().executeQuery("SELECT VERSION()");
while (rs.next()) {
System.out.println(rs.getString(1));
}
}
}
}
spring.datasource.url
jdbc:mysql://xxxxx:xxxx/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&uselegacyDatetimeCode=false&serverTimezone=UTC&useServerPrepStmts=true&cachePrepStmts=true&useConfig=maxPerformance&prepStmtCacheSize=1000&prepStmtCacheSqlLimit=2048
我是将参数交给开发来做的,他们给的图大概就这个样子。
我这里使用这里给出的链接字符串作为参数,对 Spring 进行配置,依旧无法复现。你可以使用这里的示例代码,其中 spring-jpa-hibernate 项目是使用 Spring Boot 的。可以简单的更改 application.yml 中的 spring.datasource.url
参数后,启动服务并进行测试。
我觉得报错这么明显了,是不是让研发协查一下,搞不好是那边转换成字符了
好的 了解
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。