gpt4 book ai didi

java - Spring Batch 2.2.7 应用程序抛出 "Invalid column name"。非常简单的代码炸弹

转载 作者:行者123 更新时间:2023-12-01 16:23:17 34 4
gpt4 key购买 nike

我有一个 Spring Batch 2.2.7 应用程序,一直运行良好,但今天开始抛出“无效列”。

我在 DataGrip 中运行了以下 SQL,只是为了确保它工作正常。

SELECT * FROM (SELECT * FROM Equipment WHERE rowNum < 
10 ORDER BY id ASC) WHERE ROWNUM <= 10

代码:

factoryBean.setDataSource(dataSource);
factoryBean.setSelectClause("select *");
factoryBean.setFromClause("from EQUIPMENT");
factoryBean.setSortKey("ID");
factoryBean.setWhereClause("where rowNum < 10");

SQL 没有改变,数据库架构没有改变,代码没有改变。 12 小时前还可以,但现在就不行了。什么给出?.

我尝试通过在设置属性后重新启动应用程序来进一步解决这个问题logging.level.org.springframework.jdbc.core=TRACE

这导致了以下输出日志。

2020-06-05 15:37:37.162 DEBUG 17276 --- [           main] o.s.jdbc.core.JdbcTemplate               : Executing SQL query [SELECT * FROM (SELECT * FROM Equipment WHERE rowNum < 10 ORDER BY id ASC) WHERE ROWNUM <= 10]
2020-06-05 15:37:37.715 ERROR 17276 --- [ main] o.s.batch.core.step.AbstractStep : Encountered an error executing step xxxxxxxxxx in job yyyyyyyyyyy

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [SELECT * FROM (SELECT * FROM Equipment WHERE rowNum < 10 ORDER BY id ASC) WHERE ROWNUM <= 10]; nested exception is java.sql.SQLException: Invalid column name
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462) ~[spring-jdbc-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at org.springframework.batch.item.database.JdbcPagingItemReader.doReadPage(JdbcPagingItemReader.java:210) ~[spring-batch-infrastructure-4.2.2.RELEASE.jar:4.2.2.RELEASE]

最佳答案

感谢http://shanhe.me/2011/05/15/read-carefully-spring-jdbctemplate-bad-sql-grammar-exception ,我能够解决这个问题。

SQL 语法没有问题。

我发现我对表架构做了很小的更改。我重命名了一个专栏。我用来映射设备表的 RowMapper 仍然使用旧的列名,因此出现了问题。

给 Spring jdbc 团队的建议:当您抛出 ...jdbc.BadSqlGrammarException 时,您能否向用户建议他们的列映射可能是错误的。由于您没有对此错误进行任何跟踪记录,至少当您发现时,您可以建议可能存在映射错误。看来我不是唯一遇到这个问题的人。

关于java - Spring Batch 2.2.7 应用程序抛出 "Invalid column name"。非常简单的代码炸弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62213361/

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