错误出现环境
在activiti中配置了oracle作为数据源,刚开始的时候没有在ProcessEngineConfiguration或SpringProcessEngineConfiguration中配置DatabaseSchema属性,导致创建数据库出错(该错误在mysql中没有出现),后来参考网上的方法添加了该属性,具体原因请点击这里,添加该属性后成功创建了数据库,而且项目可以正常启动。但是第二次启动数据库的时候出现了 ORA-00955: 名称已由现有对象使用 这个错误
spring.xml 配置
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> <property name="transactionManager" ref="txManager" /> <property name="databaseSchema" value="XXXX" /> <property name="databaseSchemaUpdate" value="true" /> <property name="jobExecutorActivate" value="false" /> </bean>错误原因分析
通过查询相关文档,初步断定是由于activiti自动更新数据导致的错误,第一次启动系统的时候必须设置databaseSchemaUpdate为true,否则无法自动建表,但是当第二次启动项目的时候acitiviti也会自动更新数据库,就是这个操作导致了第一次能正常启动,以后启动项目报错,关于databaseSchemaUpdate属性的说明,看这里这里
解决方法 通过分析发现出现该问题的原因就是因为activiti会自动检查数据库是否更新,所以解决的方法就是让acitiviti在数据已经建立成功的情况下,不执行检查 具体方法是删除DatabaseSchema属性,不执行检查
<!-- <property name="databaseSchema" value="XXXX" /> -->或者将databaseSchemaUpdate设置为none
<property name="databaseSchemaUpdate" value="none" />