0.21升级0.22 数据库迁移执行报错

  • Choerodon平台版本: 0.21.0

  • 遇到问题的执行步骤:
    执行命令: helm upgrade --install data-migration c7n/data-migration -f data-migration.yaml --version 0.22.2 --namespace c7n-system
    执行数据迁移异常,当前环境变量moduleName的值为user,修改data-migration 的 moduleName为user后重试仍失败。

  • 文档地址:
    https://choerodon.io/zh/docs/installation-configuration/update/0.21-to-0.22/

  • 环境信息(如:节点信息):
    分步部署0.21.0 升级 0.22.0

  • 报错日志:

2020-09-09 15:18:17.146 INFO 7 — [ main] i.c.migration.task.DataMigrationRunner : 迁移异常,当前环境变量moduleName的值为user,请确认错误后,修改环境变量后重新启动迁移服务
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘@tk.mybatis.mapper.util.OGNL@notEmptyCollectionCheck(list, ‘io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空’)’. Cause: org.apache.ibatis.ognl.MethodFailedException: Method “notEmptyCollectionCheck” failed for object class tk.mybatis.mapper.util.OGNL [java.lang.IllegalArgumentException: io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy133.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93)
at com.sun.proxy.$Proxy153.batchInsert(Unknown Source)
at io.choerodon.migration.service.impl.UserServcieImpl.userDataMigration(UserServcieImpl.java:87)
at io.choerodon.migration.task.DataMigrationRunner.run(DataMigrationRunner.java:186)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
at io.choerodon.migration.MigrationApplication.main(MigrationApplication.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘@tk.mybatis.mapper.util.OGNL@notEmptyCollectionCheck(list, ‘io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空’)’. Cause: org.apache.ibatis.ognl.MethodFailedException: Method “notEmptyCollectionCheck” failed for object class tk.mybatis.mapper.util.OGNL [java.lang.IllegalArgumentException: io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空]
at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:48)
at org.apache.ibatis.scripting.xmltags.VarDeclSqlNode.apply(VarDeclSqlNode.java:33)
at org.apache.ibatis.scripting.xmltags.MixedSqlNode.lambda$apply$0(MixedSqlNode.java:32)
at org.apache.ibatis.scripting.xmltags.MixedSqlNode$$Lambda$513/0000000078B870F0.accept(Unknown Source)
at java.util.ArrayList.forEach(Unknown Source)
at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:32)
at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:39)
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:297)
at org.apache.ibatis.executor.statement.BaseStatementHandler.(BaseStatementHandler.java:64)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.(PreparedStatementHandler.java:41)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.(RoutingStatementHandler.java:46)
at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:592)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:48)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
at com.sun.proxy.$Proxy311.update(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
… 21 more
Caused by: org.apache.ibatis.ognl.MethodFailedException: Method “notEmptyCollectionCheck” failed for object class tk.mybatis.mapper.util.OGNL [java.lang.IllegalArgumentException: io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空]
at org.apache.ibatis.ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1538)
at org.apache.ibatis.ognl.ObjectMethodAccessor.callStaticMethod(ObjectMethodAccessor.java:52)
at org.apache.ibatis.ognl.OgnlRuntime.callStaticMethod(OgnlRuntime.java:1551)
at org.apache.ibatis.ognl.ASTStaticMethod.getValueBody(ASTStaticMethod.java:77)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:493)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:457)
at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:46)
… 48 more
Caused by: java.lang.IllegalArgumentException: io.choerodon.migration.mapper.hzero.platform.UserHzeroMapper.batchInsert 方法参数为空
at tk.mybatis.mapper.util.OGNL.notEmptyCollectionCheck(OGNL.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ibatis.ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:881)
at org.apache.ibatis.ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1526)
… 56 more

  • 原因分析:

    提出您分析问题的过程,以便我们能更准确的找到问题所在

    是否环境源数据异常导致?

  • 疑问:

    提出您对于遇到和解决该问题时的疑问

请将迁移服务的版本升级到0.22.3版本