Java 未知表';批量作业顺序';字段内列表
我在跑步:Java 未知表';批量作业顺序';字段内列表,java,mysql,spring-batch,Java,Mysql,Spring Batch,我在跑步: 弹簧批次2.2.7-释放 MySQL 5.6.17 mysql-connector-java-5.1.6.jar 我使用SpringBatch 2.2.7-RELEASE的org.springframework.batch.core包中提供的schema mysql.sql文件为SpringBatch metada创建了一个新的数据库 我使用以下配置配置了transactionManager: batch.db.driver=com.mysql.jdbc.Driver batch
- 弹簧批次2.2.7-释放
- MySQL 5.6.17
- mysql-connector-java-5.1.6.jar
org.springframework.batch.core
包中提供的schema mysql.sql
文件为SpringBatch metada创建了一个新的数据库
我使用以下配置配置了transactionManager:
batch.db.driver=com.mysql.jdbc.Driver
batch.db.url=jdbc:mysql://localhost:3306/myDatabase
batch.db.user=myRootUser
batch.db.password=myRootPassword
当我尝试运行作业时,出现以下错误:
org.springframework.dao.DataAccessResourceFailureException: Could not obtain sequence value; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQL
SyntaxErrorException: Unknown table 'BATCH_JOB_SEQ' in field list
at org.springframework.jdbc.support.incrementer.AbstractSequenceMaxValueIncrementer.getNextKey(AbstractSequenceMaxValueIncrementer.java:79)
at org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer.nextLongValue(AbstractDataFieldMaxValueIncrementer.java:1
25)
at org.springframework.batch.core.repository.dao.JdbcJobInstanceDao.createJobInstance(JdbcJobInstanceDao.java:98)
at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:135)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:172)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy5.createJobExecution(Unknown Source)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:124)
at com.tinqin.deliverymanager.batch.executor.OneJobExecutor.execute(OneJobExecutor.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.tinqin.deliverymanager.batch.RunBatch.main(RunBatch.java:37)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'BATCH_JOB_SEQ' in field list
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
at org.springframework.jdbc.support.incrementer.AbstractSequenceMaxValueIncrementer.getNextKey(AbstractSequenceMaxValueIncrementer.java:70)
... 25 more
检查数据库内容时,我确实看到了带有单个条目(0,0)的表BATCH\u JOB\u SEQ
使用DEBUG
log level,stacktrace前面的行如下所示:
DEBUG [DataSourceUtils] - Fetching JDBC Connection from DataSource
DEBUG [DriverManagerDataSource] - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/myDatabase]
DEBUG [DataSourceUtils] - Registering transaction synchronization for JDBC Connection
DEBUG [JdbcTemplate] - Executing prepared SQL query
DEBUG [JdbcTemplate] - Executing prepared SQL statement [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME =
? and JOB_KEY = ?]
DEBUG [DataSourceUtils] - Returning JDBC Connection to DataSource
DEBUG [DataSourceTransactionManager] - Initiating transaction rollback
DEBUG [DataSourceTransactionManager] - Rolling back JDBC transaction on Connection [com.mysql.jdbc.JDBC4Connection@b7a85a]
DEBUG [DataSourceUtils] - Resetting isolation level of JDBC Connection [com.mysql.jdbc.JDBC4Connection@b7a85a] to 4
DEBUG [DataSourceTransactionManager] - Releasing JDBC Connection [com.mysql.jdbc.JDBC4Connection@b7a85a] after transaction
DEBUG [DataSourceUtils] - Returning JDBC Connection to DataSource
奇怪的是,执行的查询既不包含对批处理作业的任何引用,也不包含整个执行日志
原因可能是什么?我如何纠正?谢谢。检查@BhargavKumarR谢谢,但正如我所说,我已经使用了提供的数据库创建脚本。我检查了一下表是否存在。嘿,我面临着同样的问题。有更新吗?