Инициализация движка не работает на MySQL, если другой БД использует также Activiti - PullRequest
0 голосов
/ 08 апреля 2019

Следуя краткому руководству, я столкнулся с действительно раздражающим поведением.Я получаю следующую ошибку: 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)». Эта функция, кажется, не работает с MySQL, если в другой базе данных включен Activiti (в моей среде у меня есть база данных Alfresco на том же экземпляре MySQL): запрос databaseMetaData.getTables ()дает неправильный результат (Таблица alfresco.ACT_RU_EXECUTION) вместо ничего.

Я попытался добавить некоторые префиксы таблиц и / или параметры каталога в ProcessEngineConfiguration.Установка каталога приводит к тому, что databaseMetaData.getTables () дает правильный результат, поэтому таблицы Activiti создаются в «mydatabase», но выдают исключение позже, когда Activiti пытается подключиться к базе данных с помощью каталога (который mysql не поддерживает).

Тот же результат для более старых (5.5) и более новых (5.7) версий mysql.Кто-нибудь есть обходной путь / правильную конфигурацию, чтобы предложить?Я не могу просто изменить права на базу данных, чтобы пользователь db не видел базу данных alfresco.

Я полагаю, что должен быть сделан запрос на изменение, чтобы сделать логический фильтр isTablePresent (String tableName) для каталога, когда типом базы данных является MySQL.

С уважением

1 Ответ

0 голосов
/ 08 апреля 2019

После некоторых поисков в проблемах GitHub я обнаружил нечто похожее.

Если я добавлю «nullCatalogMeansCurrent = true» в URL-адрес соединения, оно работает.Полезно только для последней версии разъема / J

...