Spring Batch DB安装脚本无法在Unix上运行

时间:2015-01-29 07:58:54

标签: spring-batch derby spring-jdbc

我们有一个Spring Batch应用程序,用于开发,使用嵌入式Derby数据库。当从IntelliJ内部运行或作为Windows上的jar运行时,Derby数据库就像我们期望的那样创建。此外,还会运行设置数据库的脚本。

这都在launch-context.xml中的配置中定义。

我们的设置是标准的:

   

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
   <property name="dataSource" ref="derbyDataSource" />
   <property name="transactionManager" ref="transactionManager" />
   <property name="databaseType" value="derby" />
</bean>

<bean id="derbyDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
   <property name="url" value="jdbc:derby:sql/dartpublisher;create=true"/>
   <property name="username" value=""/>
   <property name="password" value=""/>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="derbyDataSource" />
</bean>

<jdbc:initialize-database data-source="derbyDataSource" ignore-failures="ALL" enabled="true">
   <jdbc:script location="org/springframework/batch/core/schema-drop-derby.sql" />
   <jdbc:script location="org/springframework/batch/core/schema-derby.sql" />
</jdbc:initialize-database>

当我们在Unix上运行时,Derby数据库也会按预期创建,我们希望看到的文件就在那里。

但是,似乎数据库设置脚本没有运行,因为抛出了这个异常:

Caused by: java.sql.SQLException: Table/View 'BATCH_JOB_INSTANCE' does not exist.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
        ... 54 more
Caused by: ERROR 42X05: Table/View 'BATCH_JOB_INSTANCE' does not exist.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
        at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
        at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
        at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
        at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
        at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
        at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
        at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
        at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
        ... 48 more

这就是Spring应用程序的引导方式:

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("app-context.xml");
ctx.getEnvironment().getPropertySources().addLast(propertySource);
ctx.refresh();
ctx.start();

代码或配置没有改变 - 有谁知道问题可能是什么?

由于

0 个答案:

没有答案