開始鑽研工作流的東西,第一顆釘子,筆記之:
錯誤信息:
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的版本,選擇了后者,前者吧不大好掌握,我試了試不好使,建表語句沒有改變,還是后者來得痛快.........