如果另一个db也使用Activiti,则初始化引擎不能在MySQL上运行

问题描述 投票:0回答:1

按照快速入门指南,我面临着一种非常讨厌的行为。我收到以下错误:java.sql.SQLSyntaxErrorException:表'mydatabase.ACT_GE_PROPERTY'不存在

这是我使用的简单代码,给出了一个工作数据源(MySQL数据库'mydatabase')

ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
  .setDataSource(ds);

processEngine = cfg.buildProcessEngine();

基本上Activiti并没有像它应该那样创建任何表。

调试它,我发现Activiti检查是否存在ACT_RU_EXECUTION以决定是否创建表。要检查此表,它会调用“isTablePresent(String tableName)”如果另一个数据库启用了Activiti(在我的环境中我在同一个MySQL实例上有一个Alfresco数据库),这个函数似乎与MySQL混淆了:查询databaseMetaData.getTables()给出错误的结果(表alfresco.ACT_RU_EXECUTION)而不是什么。

我尝试向ProcessEngineConfiguration添加一些表前缀和/或目录参数。设置目录使databaseMetaData.getTables()给出正确的结果,因此Activiti表在'mydatabase'中创建,但稍后当Activiti尝试使用目录(mysql不支持)连接到数据库时会出现异常。

与较旧的(5.5)和较新的(5.7)mysql版本相同。有人提出解决方法/正确配置吗?我不能只是更改数据库权限,因此db用户不会看到alfresco数据库。

我想当数据库类型是MySQL时,应该对目录进行更改请求以对目录进行布尔“isTablePresent(String tableName)”过滤。

问候

activiti
1个回答
0
投票

在GitHub问题中进行了一些搜索后,我发现了类似的东西。

如果我将“nullCatalogMeansCurrent = true”添加到连接的url,它正在工作。仅适用于最新版本的connector / j

© www.soinside.com 2019 - 2024. All rights reserved.