为什么我在使用 JDBC 驱动程序时收到“意外的数据结束”?

Why am I getting an "Unexpected End of Data" with JDBC driver?

提问人:Morkus 提问时间:8/11/2023 更新时间:8/11/2023 访问量:22

问:

我有一些JDBC代码(在SpringBoot应用程序中)可以工作一段时间,但是几个小时后,它崩溃了,并显示“SQL异常:数据意外结束”。

我正在使用 Spring 连接池的 Windows 2022 服务器上调用 REST 端点。

我有两个测试应用程序,它们在 Windows 服务器上调用相同的 JDBC 代码。

一个应用(即有问题的应用)将从 blob 代码中检索到的文件写入 Windows 文件系统。

另一个应用调用完全相同的 Windows 服务逻辑,但将字节流返回到 Mac 并在本地写入文件,每次都能正常工作。

我以为这可能是某种超时问题,但 Mac 版本的测试代码每次都能正常工作。

代码相同,但 Tomcat 安装不同。这可能是服务器上与 Tomcat 的连接池有关吗?池设置在 Spring 应用程序中,因此它们是相同的,但 Tomcat 安装不是。

我的连接设置是(减去登录名和密码...

spring.datasource.tomcat.initial-size=15
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=100
spring.datasource.tomcat.max-idle=15
spring.datasource.tomcat.min-idle=8
spring.datasource.tomcat.default-auto-commit=true
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

有什么想法吗?如果需要,我会得到更多细节。

spring-boot JDBC FileMaker

评论

1赞 aeskreis 8/11/2023
如果您在 Windows 和 MacOS 上遇到不同的行为,那么问题很可能出在数据库软件本身。您正在运行什么 RDBMS?确保您在两个平台上也运行完全相同的环境(即 JVM 和 RDBMS 软件的版本和供应商相同)。最后,我想补充一点,你可能会发现容器化可以更容易地解决这个问题。

答: 暂无答案