Mysql8.0.17版本不能自动创建activiti表的坑
maven项目如下:

配置好数据库,和activiti的配置之后,开始执行流程部署
package com.yuanqiao.first_activiti.deployment;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.junit.Test;
import com.google.gson.Gson;
/**
* 通过读取bpmn文件,来部署流程图
*
* @author yuanqiao
*
*/
public class DeploymentProcess {
@Test
public void deploymentFirstProcess() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().addClasspathResource("first.bpmn");
Deployment deployment = deploymentBuilder.deploy();
String deploymentId = deployment.getId();
System.out.println(deploymentId);
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery()
.deploymentId(deploymentId).list();
Gson gson = new Gson();
System.out.println(gson.toJson(processDefinitionList));
}
}
报错如下:

[main] ERROR org.activiti.engine.impl.interceptor.CommandContext - Error while closing command context org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property' doesn't exist ### The error may exist in org/activiti/db/mapping/entity/Property.xml ### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntityImpl.selectProperty-Inline ### The error occurred while setting parameters ### SQL: select * from ACT_GE_PROPERTY where NAME_ = ? ### Cause: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property' doesn't exist at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77) at org.activiti.engine.impl.db.DbSqlSession.selectById(DbSqlSession.java:364) at org.activiti.engine.impl.db.DbSqlSession.selectById(DbSqlSession.java:348) at org.activiti.engine.impl.db.DbSqlSession.dbSchemaUpdate(DbSqlSession.java:910) at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1318) at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:28) at org.activiti.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:37) at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:78) at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:57) at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:42) at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48) at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:63) at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44) at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:81) at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:665) at org.activiti.engine.ProcessEngines.buildProcessEngine(ProcessEngines.java:189) at org.activiti.engine.ProcessEngines.initProcessEngineFromResource(ProcessEngines.java:162) at org.activiti.engine.ProcessEngines.init(ProcessEngines.java:94) at org.activiti.engine.ProcessEngines.getProcessEngine(ProcessEngines.java:223) at org.activiti.engine.ProcessEngines.getDefaultProcessEngine(ProcessEngines.java:212) at com.yuanqiao.first_activiti.deployment.DeploymentProcess.deploymentFirstProcess(DeploymentProcess.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
解决方法:
(1)把mysql8.0的版本改成5.0的
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
(2)修改驱动:
com.mysql.jdbc.Driver
参考文档
https://www.cnblogs.com/shanshen/p/9054173.html
从源码分析问题:
https://blog.csdn.net/jiaoshaoping/article/details/80748065
浙公网安备 33010602011771号