从6.3升级到6.7:MySQLSyntaxErrorException:" where子句"中的未知列"密封"

2020-08-30 02:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我从6.3升级到6.7,...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我从6.3升级到6.7,并在控制台中收到很多mysql错误,这些错误与我自己的项目完全无关:

我要重现的步骤是:1->在6.3中打开项目,执行全部清理设置->蚂蚁初始化->验证一切正常2->切换到6.7代码库。 安装程序全部清除->做ant updatesystem -DconfigFile = ...

在更新系统中,这些异常已经堆积起来,但是在运行hybris时也会出现。

有什么办法解决这个问题吗?

  [java]线程" TaskExecutor-master-34-TriggerTask [8796093121462]"中的异常。de.hybris.platform.persistence.hjmp.HJMPException:org.springframework.jdbc.BadSqlGrammarException:query; 错误的SQL语法[]; 嵌套异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:" where子句"中的未知列"密封"
       [java]位于de.hybris.platform.persistence.GenericBMPBean $ GenericItemEntityState.storeChanges(GenericBMPBean.java:1624)
       [java]位于de.hybris.platform.persistence.GenericBMPBean.ejbStore(GenericBMPBean.java:313)
       [java]位于de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:186)
       [java]位于de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:161)
       [java] de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:104)
       [java] com.sun.proxy。$ Proxy109.setProperty(来源不明)
       [java]位于de.hybris.platform.persistence.ExtensibleItemEJBImpl.setProperty(ExtensibleItemEJBImpl.java:88)
       [java]位于de.hybris.platform.jalo.ExtensibleItem $ 1.compute(ExtensibleItem.java:287)
       [java]位于de.hybris.platform.jalo.Item $ CachedSetter.set(Item.java:874)
       [java]位于de.hybris.platform.jalo.ExtensibleItem.setProperty(ExtensibleItem.java:289)
       [java]位于de.hybris.platform.jalo.ExtensibleItem.setProperty(ExtensibleItem.java:233)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.markTaskFailed(DefaultTaskService.java:1470)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.processTask(DefaultTaskService.java:1418)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.process(DefaultTaskService.java:1296)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.processInTenant(DefaultTaskService.java:1265)
       [java] de.hybris.platform.task.impl.DefaultTaskService $ 5.run(DefaultTaskService.java:1133)
       [java],位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       [java],位于java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)
       [java]位于java.lang.Thread.run(Thread.java:748)
       [java]位于de.hybris.platform.core.threadregistry.RegistrableThread.internalRun(RegistrableThread.java:144)
       [java]位于de.hybris.platform.core.threadregistry.RegistrableThread.run(RegistrableThread.java:134)
       [java]原因:org.springframework.jdbc.BadSqlGrammarException:查询; 错误的SQL语法[]; 嵌套异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:" where子句"中的未知列"密封"
       [java] org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
       [java] org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
       [java] at de.hybris.platform.jdbcwrapper.DataSourceImpl.translateToDataAccessException(DataSourceImpl.java:1030)
       [java] ...另外21个
       [java]原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:" where子句"中的未知列"密封"
       [java]位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
       [java]位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
       [java]位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
       [java],位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
       [java]位于com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
       [java]位于com.mysql.jdbc.Util.getInstance(Util.java:386)
       [java] com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
       [java]位于com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
       [java]位于com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
       [java]位于com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
       [java]位于com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
       [java] com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
       [java]位于com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
       [java]位于de.hybris.platform.jdbcwrapper.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java:313)
       [java] de.hybris.platform.persistence.GenericBMPBean $ GenericItemEntityState.storeChanges(GenericBMPBean.java:1601)
       [java] ...还有20个
       [java]嵌套例外:
       [java] org.springframework.jdbc.BadSqlGrammarException:查询; 错误的SQL语法[]; 嵌套异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:" where子句"中的未知列"密封"
       [java] org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
       [java] org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
       [java] at de.hybris.platform.jdbcwrapper.DataSourceImpl.translateToDataAccessException(DataSourceImpl.java:1030)
       [java]位于de.hybris.platform.persistence.GenericBMPBean $ GenericItemEntityState.storeChanges(GenericBMPBean.java:1624)
       [java]位于de.hybris.platform.persistence.GenericBMPBean.ejbStore(GenericBMPBean.java:313)
       [java]位于de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:186)
       [java]位于de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:161)
       [java] de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:104)
       [java] com.sun.proxy。$ Proxy109.setProperty(来源不明)
       [java]位于de.hybris.platform.persistence.ExtensibleItemEJBImpl.setProperty(ExtensibleItemEJBImpl.java:88)
       [java]位于de.hybris.platform.jalo.ExtensibleItem $ 1.compute(ExtensibleItem.java:287)
       [java]位于de.hybris.platform.jalo.Item $ CachedSetter.set(Item.java:874)
       [java]位于de.hybris.platform.jalo.ExtensibleItem.setProperty(ExtensibleItem.java:289)
       [java]位于de.hybris.platform.jalo.ExtensibleItem.setProperty(ExtensibleItem.java:233)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.markTaskFailed(DefaultTaskService.java:1470)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.processTask(DefaultTaskService.java:1418)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.process(DefaultTaskService.java:1296)
       [java]位于de.hybris.platform.task.impl.DefaultTaskService.processInTenant(DefaultTaskService.java:1265)
       [java] de.hybris.platform.task.impl.DefaultTaskService $ 5.run(DefaultTaskService.java:1133)
       [java],位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       [java],位于java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)
       [java]位于java.lang.Thread.run(Thread.java:748)
       [java]位于de.hybris.platform.core.threadregistry.RegistrableThread.internalRun(RegistrableThread.java:144)
       [java]位于de.hybris.platform.core.threadregistry.RegistrableThread.run(RegistrableThread.java:134)
       [java]原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:" where子句"中的未知列"密封"
       [java]位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
       [java]位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
       [java]位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
       [java],位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
       [java]位于com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
       [java]位于com.mysql.jdbc.Util.getInstance(Util.java:386)
       [java] com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
       [java]位于com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
       [java]位于com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
       [java]位于com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
       [java]位于com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
       [java] com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
       [java]位于com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
       [java]位于com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
       [java]位于de.hybris.platform.jdbcwrapper.PreparedStatementImpl.executeUpdate(PreparedStatementImpl.java:313)
       [java] de.hybris.platform.persistence.GenericBMPBean $ GenericItemEntityState.storeChanges(GenericBMPBean.java:1601)
       [java] ...还有20个

  
4条回答
打个大熊猫
2020-08-30 03:02 .采纳回答

我只能猜测,但是看来您有很多在后台运行的cronjob,任务或业务流程。

为避免异常,您可以:

  • 使用 ant updatesystem -DdryRun = true ... 生成必要的DDL和DML脚本,并在停止混合信号的情况下直接在数据库上执行它们

  • 或将 task.engine.loadonstartup = false 添加到您的 local.properties 或ant命令( ant updatestystem -Dtask.engine .loadonstartup = false ... )以避免执行更新时发生任何后台任务。

如果列 sealed 已添加到 tasks 表中,我还将再次检查生成的sql脚本(通过 dryRun = true 生成) 。 缺少的列是堆栈跟踪的根本原因。 文件 update_master_schema.sql 应该包含以下内容:

  ALTER TABLE任务
      在p_conditionid之后添加列密封的TINYINT(1);
  

一周热门 更多>