Error querying database. Cause:java.sql.SQLSyntaxErrorException:Table '' doesn't

189 阅读1分钟
版本信息:
    jdk:17
    mysql:8.0.36
    activiti:7.0.0.Beta1

1、使用 java 整合 activiti 的时候,创建数据表时报错,报错信息如下:

image.png

}3849~WLE4XW73ER0C5)M.png

image.png

2、原因:

这里使用 mysql8 版本,默认 nullCatalogMeansCurrent 属性为false,导致 activiti 向 mysql 服务器所有的数据库中查找所需要的表,因为我其他数据库有了 activiti 生成的表,activiti 并不会在我指定的数据库中继续生成表,所以才会报错 **.表名不存在 的错误。

3、解决方法

在 jdbcUrl 属性值中,添加 &nullCatalogMeansCurrent=true ,设置只扫描当前的数据库,而不去其他数据库中查找表。

image.png

4、补充

不同 MySQL 驱动 nullCatalogMeansCurrent 默认情况:

从mysql-connector-java 5.x 版本起,nullCatalogMeansCurrent 属性由原来的默认true改为了false;

6.0之后 nullCatalogMeansCurrent 默认又改为true;

8.0后默认又改为false。