Spring batch 弹簧批次3.0.3 get“;使用非事务性存储引擎(如MyISAM)更新表;使用mysql 5.6
我使用Grails2.4.4中的SpringBatch 3.0.3.RELEASE 我在执行下面的代码时发现异常 “当@@GLOBAL.ENFORCE_GTID_CONSISTENCY=1时,对非事务表的更新只能在自动提交语句或单语句事务中进行,而不能与对事务表的更新在同一语句中进行。” 代码是Spring batch 弹簧批次3.0.3 get“;使用非事务性存储引擎(如MyISAM)更新表;使用mysql 5.6,spring-batch,Spring Batch,我使用Grails2.4.4中的SpringBatch 3.0.3.RELEASE 我在执行下面的代码时发现异常 “当@@GLOBAL.ENFORCE_GTID_CONSISTENCY=1时,对非事务表的更新只能在自动提交语句或单语句事务中进行,而不能与对事务表的更新在同一语句中进行。” 代码是 List<Flow> flowList = Lists.newArrayList() Shop.findAllByCityIdAndTypeAndStatus(cityId, 1
List<Flow> flowList = Lists.newArrayList()
Shop.findAllByCityIdAndTypeAndStatus(cityId, 1 as byte, 1 as byte).each {
Shop stationShop ->
TaskletStep taskletStep = stepBuilderFactory.get("copy_city_item_to_station").tasklet(new Tasklet() {
@Override
RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
copyCityItemToStationItem(item, stationShop)
return RepeatStatus.FINISHED
}
}).build()
Flow flow = new FlowBuilder<Flow>("subflow").from(taskletStep).end();
flowList.add(flow)
}
Flow splitFlow = new FlowBuilder<Flow>("split_city_item_to_station").split(eventTaskExecutor).add(flowList.toArray(new Flow[0])).build();
FlowJobBuilder builder = jobBuilderFactory.get("push_item_to_all_station").start(splitFlow).end();
Job job = builder.preventRestart().build()
jobLauncher.run(job, new JobParametersBuilder().addLong("city.item.id", item.id).toJobParameters())
List flowList=Lists.newArrayList()
Shop.findallbycityandtypeandstatus(cityId,1为字节,1为字节)。每个{
购物站商店->
TaskletStep TaskletStep=stepBuilderFactory.get(“复制城市项目到站点”).tasklet(新tasklet(){
@凌驾
RepeatStatus执行(StepContribution贡献,ChunkContext ChunkContext)引发异常{
copyCityItemToStationItem(项目,stationShop)
返回RepeatStatus.FINISHED
}
}).build()
Flow Flow=新的FlowBuilder(“子流”)。来自(taskletStep).end();
流列表。添加(流)
}
Flow splitFlow=新建FlowBuilder(“拆分城市项目到站点”).split(eventTaskExecutor).添加(flowList.toArray(新流[0]).build();
FlowJobBuilder=jobBuilderFactory.get(“将项目推送到所有站点”).start(splitFlow.end();
作业Job=builder.preventRestart().build()
jobLauncher.run(作业,新作业参数builder().addLong(“city.item.id”,item.id).toJobParameters())
谷歌说这个问题可能存在于“”中,所以我将文件“schema mysql.sql”中从MyISAM到InnoDB的所有引擎都替换了,它就工作了
现在我想知道我所做的是正确的还是错误的,我的方法中是否存在潜在的错误?你所做的是正确的。这是SpringBatch为MySql生成的SQL文件中的一个错误。我已经在Jira中创建了一个问题,您可以在此处查看: