将activiti的databaseSchemaUpdate设置为drop-create抛出DbSqlSession 错误

发布于2015-02-14 16:03:57 浏览7851次

 
 

今天在测试activiti的databaseSchemaUpdate属性的drop-create的时候一直抛出org.activiti.engine.impl.db.DbSqlSession错误信息,开始有点疑惑,折腾了很久才知道,原来是我将activiti数据库中的某些表或者记录删除,造成外键约束混乱,才会抛出这个错误。

错误信息:

7 [main] INFO org.activiti.engine.ProcessEngines - Initializing process engine using configuration 'file:/F:/Project_All/Eclipase_Workspace/Activiti_test01/bin/activiti.cfg.xml'

7 [main] INFO org.activiti.engine.ProcessEngines - initializing process engine for resource file:/F:/Project_All/Eclipase_Workspace/Activiti_test01/bin/activiti.cfg.xml

2015-2-14 9:20:40 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from resource loaded through InputStream

5562 [main] INFO org.activiti.engine.impl.db.DbSqlSession - performing drop on engine with resource org/activiti/db/drop/activiti.mysql.drop.engine.sql

12467 [main] ERROR org.activiti.engine.impl.db.DbSqlSession - problem during schema drop, statement drop index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'activiti.act_ru_variable' doesn't exist

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)

at com.mysql.jdbc.Util.getInstance(Util.java:382)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:779)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:622)

at org.activiti.engine.impl.db.DbSqlSession.executeSchemaResource(DbSqlSession.java:930)

at org.activiti.engine.impl.db.DbSqlSession.executeSchemaResource(DbSqlSession.java:881)

at org.activiti.engine.impl.db.DbSqlSession.executeMandatorySchemaResource(DbSqlSession.java:698)

at org.activiti.engine.impl.db.DbSqlSession.dbSchemaDrop(DbSqlSession.java:679)

at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1000)

at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:25)

at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)

at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)

at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)

at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)

at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:72)

at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:363)

at org.activiti.engine.ProcessEngines.buildProcessEngine(ProcessEngines.java:194)

at org.activiti.engine.ProcessEngines.initProcessEnginFromResource(ProcessEngines.java:167)

at org.activiti.engine.ProcessEngines.init(ProcessEngines.java:98)

at org.activiti.engine.ProcessEngines.getProcessEngine(ProcessEngines.java:224)

at org.activiti.engine.ProcessEngines.getDefaultProcessEngine(ProcessEngines.java:217)

at com.bug315.ActivitiTest01.main(ActivitiTest01.java:15)

17427 [main] ERROR org.activiti.engine.impl.db.DbSqlSession - problem during schema drop, statement alter table ACT_RU_VARIABLE

drop FOREIGN KEY ACT_FK_VAR_EXE

解决办法:

手动将activiti的所有表删除,然后修改activiti.cfg.xml配置文件中的databaseSchemaUpdate=“drop-create”,最后启动activiti引擎,此时会出现表不存在等错误,因为表已经被你手动删除了。执行完后,再启动activiti引擎,这个问题就不再抛出了。

databaseSchemaUpdate属性的取值:

flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。

true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。

create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。

drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。

最新文章

  1. ExecutorService中submit()和execute()的区别
  2. geotrellis使用(三)geotrellis数据处理过程分析
  3. linux下查看某软件是否已安装, ubuntu安装deb包
  4. 模糊查询&amp;&amp;日期时间操作
  5. JSF 2 dropdown box example
  6. 聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b
  7. POI3.10 根据Excel模版导出数据测试
  8. mooc上学习acllib后写的包含背景音乐的小涂鸦板(初入江湖,大佬勿喷)
  9. Review: Basic Knowledge about SQL
  10. Hive:ORC File Format存储格式详解
  11. RTMP 摄像头推流至七牛云直播
  12. nmap常用参数详解
  13. 使用Quartz框架定时发送预警邮件
  14. MariaDB&#160;Centos7&#160;下安装MariaDB
  15. QQ 的一些URI 协议命令
  16. Java Web项目中使用Freemarker生成Word文档
  17. linux自动启动的示例
  18. go语言基础之同级目录
  19. 3dContactPointAnnotationTool开发日志(三十)
  20. 把登录和退出功能单独写到一个公共.py脚本,其它用例test1,test2调用公共登录,退出函数

热门文章

  1. 判定 java 对象死亡的过程
  2. jetbrains激活 webstorm激活 webstorm激活码
  3. 创建Web项目运行时出小错误及解决方法
  4. C#学习笔记(基础知识回顾)之值传递和引用传递
  5. CF17E Palisection
  6. mybatis三种传值方式
  7. 利用localStorage事件来跨标签页共享sessionStorage
  8. 007Spring Security
  9. Spring Data MongoDB 环境搭建
  10. SSH反向代理转发至内网msf