2021-04-09 14:47:48.732 ERROR 5088 --- [ main] o.a.e.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) ~[mybatis-3.5.6.jar:3.5.6]
問題分析:
因為mysql使用schema標識庫名而不是catalog,因此mysql會掃描所有的庫來找表,如果其他庫中有相同名稱的表,activiti就以為找到了,本質上這個表在當前數據庫中並不存在。
設置nullCatalogMeansCurrent=true,表示mysql默認當前數據庫操作,在mysql-connector-java 5.xxx該參數默認為true,在6.xxx以上默認為false,因此需要設置nullCatalogMeansCurrent=true
解決辦法:
yml數據源配置:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///activiti?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: root