文章目录
- 1、问题描述
- 2、原因分析
- 3、解决方案
- 3.1、方案一:降低mysql版本
- 3.2、方案二:增加nullCatalogMeansCurrent参数(推荐)
- 4、总结
1、问题描述
需要在docker中,部署Camunda流程引擎。通过启动脚本camunda-platform-dockerstart.sh 连接引擎。
本文使用的数据库为mysql8.0.21版本,camunda-platform-dockerstart.sh 脚本内容如下:
#!bin/bash
docker run -d --name camunda -p 8080:8080 \-e DB_DRIVER=com.mysql.cj.jdbc.Driver \-e DB_URL=jdbc:mysql://192.168.188.135:3306/camunda \-e DB_USERNAME=root \-e DB_PASSWORD=123456 \-e WAIT_FOR=192.168.188.135:3306 \camunda/camunda-bpm-platform:7.18.0
执行上述脚本时,出现如下错误提示:
Cause: java.sql.SQLSyntaxErrorException: Table 'camunda_platform_docker.ACT_GE_PROPERTY' doesn't exist

2、原因分析
mysql连接从6.x版本开始,将nullCatalogMeansCurrent属性由原来的默认true改为了false。
true:使用指定的数据库进行查询。优先取当前传入的数据库名,其次取当前链接的数据库名。false:代表遍历当前链接下的所有数据库(即从information_schema,mysql和performance_schema这三个系统DB中进行查询)。
所以,如果提前在虚拟机的mysql中,创建过其他Camunda的数据库(非第一次创建Camunda流程引擎),则会存在activiti表。此时,使用同一个虚拟机ip下的mysql再次创建Camunda时,就算两张activiti表不在同一个数据库中,也会产生该错误。
3、解决方案
3.1、方案一:降低mysql版本
降低mysql版本至5.x,同时也应该使用mysql 5.x的数据库驱动进行连接:
DB_DRIVER=com.mysql.jdbc.Driver
3.2、方案二:增加nullCatalogMeansCurrent参数(推荐)
在连接语句后增加:nullCatalogMeansCurrent=true
DB_URL=jdbc:mysql://自己的虚拟机ip地址:3306/camunda?nullCatalogMeansCurrent=true
只要出现了以下49张表,说明Camunda流程引擎创建成功。

4、总结
-
将
mysql版本降为5.x。 -
在数据库连接的url后面加上
nullCatalogMeansCurrent=true。
既然选择了mysql8.0的版本,更推荐使用第二种方案。