Flowable删表问题之table ‘activiti.act_ge_property‘ doesn‘t exist

news/2024/11/23 22:39:19/

1.问题产生的原因:
由于自己采用的是mysql5.7版本且未做过多的配置,flowable自动生成的表全部是大写,个人不太习惯,就把flowable在mysql中对应的schema(数据库)的表全部删除,然后在my.cfg(windows可能是my.ini)这些配置文件中,加入限定表为小写的配置(在[mysqld]下加入lower_case_table_names=1,重启mysql服务)。 然后启动项目,结果出现
问题:

org.apache.ibatis.exceptions.PersistenceException: Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property' doesn't existThe error may exist in org/activiti/db/mapping/entity/Property.xmlThe error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-InlineThe error occurred while setting parametersSQL: select * from ACT_GE_PROPERTY where NAME_ = ?Cause: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property' doesn't existat org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62)at org.activiti.engine.impl.db.DbSqlSession.selectById(DbSqlSession.java:466)at org.activiti.engine.impl.db.DbSqlSession.dbSchemaUpdate(DbSqlSession.java:1080)at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1473)at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:25)at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37)at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:77)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:427)at web.TestDemo.creteTable(TestDemo.java:209)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property' doesn't existat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:55)at com.sun.proxy.$Proxy6.execute(Unknown Source)at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:56)at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:70)at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:57)at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)... 35 more

2.问题解决:
失败的删除数据库方案
(1) 找到mysql中创建的数据库(我这里是在连接工具navicat中进行的删除),比如我这的是flowable_test,之前是删除了表,现在我进行这个数据库(schema)删除,结果又出现一个问题

Error dropping database (can't rmdir './db'...)

失败的替换数据库方案
(2)提示数据库删除不了,好吧,新建一个数据库flowable,把项目中的配置改为这个,结果还是出现问题。

'activiti.act_ge_property' doesn't exist

失败的替换传递连接参数方案
(3)尝试网上的更改数据库连接,传递参数
在mysql的连接字符串中添加上nullCatalogMeansCurrent=true,将schema默认设置为当前连接的schema。

数据源配置

spring:datasource:driverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/flowstudy?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&autoReconnect=true&&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMulQueries=true&&nullCatalogMeansCurrent=trueusername: rootpassword: root

注意这个驱动信息driverClassName: com.mysql.cj.jdbc.Driver,mysql8.0驱动兼容mysql5.7的,而mysql5.7驱动的一般写法是
driver-class-name: com.mysql.jdbc.Driver,此处写8.0的驱动没问题,我导入的依赖包就是8.0版本的。
接着重新启动项目,结果失败!!

安装目录中删除mysql数据库文件夹
(4)实在不行了,祭杀招,找到mysql数据的安装地点,找到建立的数据库文件
夹(一般在data目录下),删除掉。windows中安装mysql的可以自行摸索,我安装在虚拟机的linux下,所以执行下列操作:
1)ps aux | grep mysql 列出mysql相关的信息
2) 找到datadir目录,在下列图片中可以看到,是在/var/lib/mysql下,进入该目录。执行命令cd /var/lib/mysql

在这里插入图片描述
3) ls
列出当前文件夹内的内容,可以看到很多数据库文件夹,我这里是蓝色的文件夹,
在这里插入图片描述其实这些文件夹就是数据库内容,和下面这个对应
在这里插入图片描述
4)将之前出问题且在界面中删除不掉的flowable_test删除,执行
rm -rf ./flowable_test
成功后,在数据库连接工具中重新创建一个flowable_test(这个随意,和自己连接的一致就行)
4)然后重新启动项目 即可。(如果还是不行,可能是刚才项目中尝试连接了其他数据库,将之前尝试连接过的都删掉即可)
成功生成数据库表共70张,恩没有将流程设计器集成进来,表少了些,是正常的,在一般项目中也差不多是这个数(flowableb不同版本表的张数可能不同)。
是小写的表了,恩,看着顺眼多了!
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201224133438476.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MTQ5MjIz,size_16,color_FFFFFF,t_70

特殊说明: 本人采用的springboot项目版本2.1.2.release,flowable版本是6.4.2,在springboot项目中,一般不会出现本篇文章所描述这种表不存在的初始化问题,预测是在数据库表创建好后,接着就删数据库表出现的问题。删flowable表时,先全选表,然后一般会删3-4次以上,每次越删越少,因为很多表是相互关联的。我当时是全选,然后删一次就全部删完了,接着项目启动就是失败了。

如有不足或疏漏之处请多指正,谢谢。


http://www.ppmy.cn/news/224661.html

相关文章

Activiti之act_ge_property表引发的坑(dbSchemaUpdate)

Activiti之act_ge_property表引发的坑(dbSchemaUpdate) 参考文档: https://blog.csdn.net/lb19921223/article/details/79213851 上篇文章写道,我学习acitiviti的时候,使用mysql的truncate把表中的数据都删除了,然后重新部署流程,结果居然报错了。 <beans xmlns=&q…

Ubuntu16.04在微星G62的安装

最近在自己刚买的微型电脑上安装Ubuntu16.04遇到了acpi问题。 解决方案&#xff1a;安装时&#xff0c;进入安装的grub界面&#xff0c;在倒数第二行输入acpioff&#xff0c;然后按F10就能正常安装&#xff0c;安装成功后在进入系统时仍然在grub倒数第二行输入acpioff。 永久…

微星GE62 NVIDIA960m 双系统ubuntu16.04 配置caffe-ssd

说来惭愧&#xff0c;之前完全没接触过装系统&#xff0c;微星的笔记本买回来是没有系统的&#xff0c;当时是同学帮我装的win10。最近需要做物体检测方面的工作&#xff0c;用DL&#xff0c;还是linux下比较方便。一个没装过系统的小白开始了安装第二个系统ubuntu之旅。现在已…

win10下安装ubuntu(微星GE62VR

今天收到老师要求&#xff0c;需要做一个ROS的课题&#xff0c;首先需要安装ubuntu。这篇博客记录一下安装过程&#xff1a; 1. 官网下载ubuntu&#xff0c;跟ROS兼容较好的是14.04版本。而官网相关的链接好像是404&#xff08;基本上旧版本都是&#xff0c;很气&#xff09;ht…

WIN10下msi GE62 1077 无线热点掉线问题处理(更新:取消自动关闭热点

1077带是Intel3165无线网卡&#xff0c;更新完最新的驱动之后&#xff0c;不仅分享热点会有连接不上的情况&#xff0c;还会有掉线的情况&#xff0c;也就是该版本的驱动已经不支持网络承载功能&#xff0c;就是俗称的WIFI共享&#xff0c;如果要打开网络承载开启wifi共享&…

win10 64位系统 微星GE62 安装Linux ubutuntu 系统Deepin的过程

win下安装linux系统还是费了一番周折&#xff0c;虽然网上有很多的教程&#xff0c;有时搬来主义是可行的&#xff0c;但落到实处总是因为各种不可预料的东西变得复杂&#xff0c;废话不多说&#xff0c;正式开始吧&#xff1a; 一&#xff0c;安装前的准备&#xff1a; 1&am…

Android Studio 无法运行Java类的main方法

Android Studio 无法运行Java类的main方法 解决方法 &#xff08;1&#xff09;: 点击main方法运行按钮 执行 “Run with Coverage” 解决方法 &#xff08;2&#xff09;: 修改 .idea/gradle/xml文件中的配置&#xff1a; 在 <GradleProjectSettings/>节点下添加 <o…

react组件性能优化探索实践

React本身就非常关注性能&#xff0c;其提供的虚拟DOM搭配上Diff算法&#xff0c;实现对DOM操作最小粒度的改变也是非常的高效。然而其组件渲染机制&#xff0c;也决定了在对组件进行更新时还可以进行更细致的优化。 react组件渲染 react的组件渲染分为初始化渲染和更新渲染。…