activiti7 的M4版本,有一个bug,就是生成的表里面有的缺字段,需要这样做

针对Activiti7 M4版本中存在表结构缺失字段的bug,解决方案是在生成25张表后,通过执行SQL语句来添加PROJECT_RELEASE_VERSION和VERSION两个字段,确保数据库完整性和应用正常运行。

目录

1问题

activiti7 的M4版本,有一个bug,就是生成的表里面有的缺字段

2 解决

在生成25张表之后,我们需要执行这个语句

-- ----------------------------
-- 修复Activiti7的M4版本缺失字段Bug
-- ----------------------------
alter table ACT_RE_DEPLOYMENT add column PROJECT_RELEASE_VERSION_ varchar(255) DEFAULT NULL;
alter table ACT_RE_DEPLOYMENT ad
### 3.1 检查依赖版本与兼容性 在 Spring Boot 3 项目中整合 Activiti 7.1.0.M4 时,若启动后未生成 Activiti 的数据库结构,首先应确认依赖版本的兼容性。Activiti 7.1.0.M4一个早期的里程碑版本,可能存在与 Spring Boot 3 的兼容性问题。建议使用 Activiti 7.1.0.M6 或更高版本,以获得更好的 Spring Boot 3 支持。 Maven 示例: ```xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version> </dependency> ``` ### 3.2 确认数据库配置是否正确 Activiti 依赖数据库自动创建 25 张。在 `application.properties` 或 `application.yml` 中配置数据库连接信息时,需确保配置正确且数据库可访问。例如,使用 H2 内存数据库时,配置如下: ```properties spring.datasource.url=jdbc:h2:mem:activiti;DB_CLOSE_DELAY=-1 spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.hibernate.ddl-auto=update ``` 如果使用 MySQL 或 PostgreSQL,需确保数据库服务正常运行,并配置正确的驱动和连接参数。 ### 3.3 检查 Activiti 自动部署配置 Activiti 默认会在启动时自动部署流程定义,并创建所需的数据库结构。若未生成结构,可能是因为未启用自动部署功能。在 `application.properties` 中添加以下配置以确保 Activiti 启动时检查流程定义并自动创建: ```properties activiti.check-process-definitions=true activiti.history-level=full ``` ### 3.4 查看日志输出以排查错误 启动应用时,需仔细查看日志输出,特别是与数据库连接和结构创建相关的日志。例如,Activiti 会输出类似 `Creating tables` 的日志信息。若未出现该信息,可能示数据库连接失败或未正确配置。 日志示例: ``` INFO o.a.e.i.b.ProcessEngineConfigurationImpl - Creating tables... INFO o.a.e.i.b.ProcessEngineConfigurationImpl - Tables created successfully ``` 若日志中出现数据库连接失败或权限问题,需检查数据库配置和用户权限。 ### 3.5 手动执行建脚本 若自动创建结构失败,可尝试手动执行 Activiti 提供的建脚本。Activiti 提供了针对不同数据库的 SQL 脚本,位于 `org.activiti.engine.impl.db.create` 包中。例如,对于 H2 数据库,可执行以下 SQL 脚本: ```sql -- H2 数据库建脚本 CREATE TABLE ACT_RE_DEPLOYMENT (ID_ VARCHAR(64), NAME_ VARCHAR(255), CATEGORY_ VARCHAR(255), TENANT_ID_ VARCHAR(255), GEOMETRY_ TEXT, PRIMARY KEY (ID_)); CREATE TABLE ACT_RE_MODEL (ID_ VARCHAR(64), REV_ INTEGER, NAME_ VARCHAR(255), KEY_ VARCHAR(255), CATEGORY_ VARCHAR(255), CREATE_TIME_ TIMESTAMP, LAST_UPDATED_TIME_ TIMESTAMP, VERSION_ INTEGER, META_INFO_ VARCHAR(4000), DEPLOYMENT_ID_ VARCHAR(64), EDITOR_SOURCE_VALUE_ID_ VARCHAR(64), EDITOR_SOURCE_EXTRA_VALUE_ID_ VARCHAR(64), TENANT_ID_ VARCHAR(255), PRIMARY KEY (ID_)); -- 其他结构定义... ``` ### 3.6 确保数据库用户权限充足 在生产环境中,若数据库用户权限不足,可能导致 Activiti 无法自动创建结构。需确保数据库用户具有创建、索引、视图等操作的权限。例如,在 MySQL 中,可执行以下命令授予用户权限: ```sql GRANT ALL PRIVILEGES ON activiti.* TO 'activiti_user'@'localhost'; FLUSH PRIVILEGES; ``` ### 3.7 检查 Activiti 数据库配置是否冲突 在某些情况下,Spring Boot 项目中可能同时配置了多个数据源,导致 Activiti 无法正确识别主数据源。此时需在配置文件中明确指定 Activiti 使用的数据源: ```properties spring.activiti.datasource=default ``` 或者通过 Java 配置类显式配置数据源: ```java @Configuration public class ActivitiConfig { @Bean public DataSource activitiDataSource(DataSourceProperties dataSourceProperties) { return dataSourceProperties.initializeDataSourceBuilder().build(); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值