gpt4 book ai didi

java - Spring JDBCTemplate 总是抛出 QueryTimeOutException

转载 作者:行者123 更新时间:2023-11-30 09:10:47 26 4
gpt4 key购买 nike

这是我一直在挠头的事情 - 特别是因为它令人恼火。

考虑以下代码:

String query = "UPDATE ORDERS SET VOLUME=?,CONTRACT_ID=?,PROJECT_ID=?,WORKSITE_ID=?,DROPZONE_ID=?,DESCRIPTION_ID=?,MANAGER_ID=?,DELIVERY_DATE=?,REVISION=REVISION+1) WHERE ID=?";
jdbcTemplate.update(query, orderEntity.getVolume(), orderEntity.getContractNo(), orderEntity.getProjectID(), orderEntity.getWorksiteID(), orderEntity.getDropzoneID(), orderEntity.getDescriptionID(), orderEntity.getManagerID(), orderEntity.getDeliveryDate(), id);

我们可以看到 SQL 查询是不正确的 - 因此会抛出一些 SQL 错误,但人们可能已经错过了。 Spring 将(对我而言)抛出一个 QueryTimeoutException 作为响应。我对此没什么意见,但这没有帮助。

现在让我们试试

String query = "INSERT INTO ORDERS(ID,REISION,CONTRACT_ID,PROJECT_ID,WORKSITE_ID,DROPZONE_ID,DESCRIPTION_ID,MANAGER_ID,VOLUME,DELIVERY_DATE) VALUES(?,?,?,?,?,?,?,?,?,?)";
jdbcTemplate.update(query, id, revision, etc);

另一个容易被忽略的拼写错误 - REVISION 被错误拼写为 REISION) Spring 再次抛出另一个 QueryTimeoutException。现在这意味着,如果我得到那个异常,我实际上并不知道它是什么。是语法错误吗?是列拼写错误吗?是否(更难注意到)未遵循外键约束的事实?

调试时,这很可能是有史以来最令人恼火的事情——我所知道的是我的查询运行失败。我怎样才能得到有用的东西?是否有我没有添加到我的 pom.xml 文件中的东西?

编辑:

这是一个更好的例子。我有一个 DESCRIPTIONS 表,其中包含 ID、REVISION 和 TEXT 列。所有这些都被标记为不可为空。

DescriptionEntity descriptionEntity = new DescriptionEntity("newDesc", 1, null);
String query = "INSERT INTO DESCRIPTIONS (ID,REVISION,TEXT) VALUES(?,?,?)";
jdbcTemplate.update(query, descriptionEntity.getID(), 1, descriptionEntity.getText());

这也会抛出一个查询超时异常,当在 mysql 中运行查询时给我 ERROR 1048 (23000): Column 'TEXT' cannot be null

委婉地说,这有点痛苦。

最佳答案

在第一个示例中,这不是拼写错误,因为您遗漏了左括号。我会说这不是 Spring 或 JDBC 的问题,而是您的数据库正在尝试处理 SQL,等待更多输入或其他内容,并且永远不会返回。

在第二个中,我不知道你在说什么,因为我不了解表格设计。我必须假设您的意思是 ID 不是唯一的?同样,我不会责怪 Spring 或 JDBC,也许是驱动器,最有可能是数据库服务器。

请记住,在很多情况下,SQL 在用户客户端 UI 中的处理方式与通过 JDBC 处理的方式不同。例如,在 SQL Server 中,SQL 被设置为字符串,传入的参数设置为变量,并使用 sp_executesql() 来运行它。我发现,当我有一个报告可以通过 SQL Studio Manager 客户端完美运行,但当我实时运行它时却崩溃了,因为查询计划优化器由于 SQL 运行方式的不同而采用了不同的路径。

关于java - Spring JDBCTemplate 总是抛出 QueryTimeOutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22377551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com