39

Spring Batch フレームワークを使用してバッチ ジョブを作成しましたが、CREATE SQL を実行するためのデータベース権限がありません。バッチ ジョブを実行しようとすると、フレームワークが TABLE_BATCH_INSTANCE を作成しようとしたときにエラーが発生しました。私は無効にしようとします

<jdbc:initialize-database data-source="dataSource" enabled="false">    
 ...
</jdbc:initialize-database>

しかし、試した後もエラーが発生します

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]; nested exception is java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

とにかく、SQL を無効にすることができます。リーダー ライターとプロセッサが正しく動作することをテストしたいだけです。

4

10 に答える 10

6

Spring バッチ データスキーマの自動作成を有効にするには、次の行を spring application.properties ファイルに追加するだけです。

spring.batch.initialize-schema=常に

Spring バッチ メタデータ スキーマの詳細を理解するには:

https://docs.spring.io/spring-batch/trunk/reference/html/metaDataSchema.html

于 2018-09-17T16:59:21.467 に答える
1
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd">


    <!-- database -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/springbatch" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

    <!-- transaction manager -->
    <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />

    <!-- create job-meta tables automatically -->
    <jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="org/springframework/batch/core/schema-drop-mysql.sql" />
        <jdbc:script location="org/springframework/batch/core/schema-mysql.sql" />
    </jdbc:initialize-database>
</beans>

そして、 spring-batchと互換性のあるspring-jdbc -version を使用していることを確認してください。おそらくspring-jdbc-3.2.2.RELEASE.JARと互換性があります。

于 2016-12-08T06:54:21.770 に答える
0

<jdbc:initialize-database/>タグは、Spring によって を使用して解析されInitializeDatabaseBeanDefinitionParserます。IDE でこのクラスをデバッグして、どの値がenabled属性として取得されているかを確認できます。また、この値は JVM パラメータを使用して無効にすることができます-Dspring.batch.initializer.enabled=false

于 2015-10-21T06:31:10.697 に答える