报错如下:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'matebase.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 'matebase.act_ge_property' doesn't exist
原因:
MySQL版本8.xxx以后当上会出现该问题,改成了5.1.6版本,该错误解决了。 因为mysql使用schema标识库名而不是catalog,因此mysql会扫描所有的库来找表,如果其他库中有相同名称的表,activiti就以为找到了,本质上这个表在当前数据库中并不存在。
解决方案:
配置mysql连接时加上:nullCatalogMeansCurrent=true
nullCatalogMeansCurrent = true: 返回指定库涉及表
nullCatalogMeansCurrent = false: 返回所有库涉及表
在mysql-connector-java 5.xxx该参数默认为true,在6.xxx以上默认为false,因此需要设置nullCatalogMeansCurrent=true。