Следуя краткому руководству, я столкнулся с действительно раздражающим поведением.Я получаю следующую ошибку: 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.
С уважением