开始钻研工作流的东西,第一颗钉子,笔记之:
错误信息:
jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
分析:
JBPM初始化建立表格时create语句错误,如下:
create table JBPM4_DEPLOYMENT (
DBID_ bigint not null,
NAME_ longtext,
TIMESTAMP_ bigint,
STATE_ varchar(255),
primary key (DBID_)
) type=InnoDB
关键在于这个创建表格的语句在Navicat Lite中执行该条SQL语句也同样报错,type=InnoDB不符合语法,我的mysql版本是5.5的,
经"度娘"之后发现,MySQL 4.0开始不建议使用type=InnoDB,建议使用Engine=InnoDB,而MySQL 5.5只能用Engine=InnoDB
解决方案:
首先普及一下jbpm4.4创建默认表格的方法是有两种方法的,第一种是通过ant命令在dos窗口建立(用的是jbpm-4.4/install/src/db/create/jbpm.mysql.create.sql的sql语句创建的);另一种是通过代码,运行java代码,自动创建的(这种则是在你配好java项目之后利用项目里的默认配置来创建默认表格的)。
关键是两种方法所用到的文件是不同的,认清这点这个很重要。
好了接下来咱说解决方案:
方案1.修改jbpm-4.4/install/src/db/create/jbpm.mysql.create.sql中的脚本:
将其中的type=InnoDB改为Engine=InnoDB
(这种方法适用于用ant命令创建表格的方式,这也是为什么我之前用这种方法之后在java代码中创建表格不成功的原因了)
方案2.安装MySQL Server 5.1
(第二种方法比较彻底,读者推荐)
这是网上的兄弟的方法,自己试了试,还是换了mysql的版本,选择了后者,前者吧不大好掌握,我试了试不好使,建表语句没有改变,还是后者来得痛快.........