日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Activiti之H2

發(fā)布時(shí)間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Activiti之H2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

//by yan 20211229

H2數(shù)據(jù)庫(kù)誤刪Saved Settings

裝上H2數(shù)據(jù)庫(kù)后,操作失誤,把Saved Settings列表里面的項(xiàng)目刪除了,并進(jìn)行了保存。想要恢復(fù)原設(shè)置的時(shí)候,發(fā)現(xiàn)卸載后重裝也不行。

解決方法:
刪除 ~/.h2.server.properties文件,重裝H2即可

注意:
找不到路徑的同學(xué)搜索“h2.server.properties”。
~應(yīng)該是指就是操作系統(tǒng)當(dāng)前用戶的目錄 自行baidu 【~】的含義。

H2的運(yùn)行方式
  • 一、在內(nèi)存中運(yùn)行
    數(shù)據(jù)庫(kù)只在內(nèi)存中運(yùn)行,關(guān)閉連接后數(shù)據(jù)庫(kù)將被清空,適合測(cè)試環(huán)境
    連接字符串:
    jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1
    如果不指定DBName,則以私有方式啟動(dòng),只允許一個(gè)連接

  • 二、嵌入式
    數(shù)據(jù)庫(kù)持久化存儲(chǔ)為單個(gè)文件
    連接字符串:
    jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE
    ~/.h2/DBName表示數(shù)據(jù)庫(kù)文件的存儲(chǔ)位置,如果第一次連接則會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)。
    嚴(yán)格來(lái)說(shuō)應(yīng)該叫文件方式連接,因?yàn)槲募绞絾?dòng)不需要先啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器,直接在連接URL中填寫絕對(duì)或相對(duì)路徑即可,由于創(chuàng)建數(shù)據(jù)庫(kù)連接時(shí),H2引擎發(fā)現(xiàn)指定的路徑下如果不存在數(shù)據(jù)庫(kù),則會(huì)自動(dòng)創(chuàng)建。

  • 三、服務(wù)模式
    H2支持三種服務(wù)模式:
    1.web server:此種運(yùn)行方式支持使用瀏覽器訪問H2 Console
    2.TCP server:支持客戶端/服務(wù)器端的連接方式
    3.PG server:支持PostgreSQL客戶端
    啟動(dòng)tcp服務(wù)連接字符串示例:
    jdbc:h2:tcp://localhost/~/test 使用用戶主目錄
    jdbc:h2:tcp://localhost//data/test 使用絕對(duì)路徑

  • 四、連接字符串參數(shù)
    1.DB_CLOSE_DELAY:要求最后一個(gè)正在連接的連接斷開后,不要關(guān)閉數(shù)據(jù)庫(kù)
    2.MODE=MySQL:兼容模式,H2兼容多種數(shù)據(jù)庫(kù),該值可以為:DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
    3.AUTO_RECONNECT=TRUE:連接丟失后自動(dòng)重新連接
    4.AUTO_SERVER=TRUE:啟動(dòng)自動(dòng)混合模式,允許開啟多個(gè)連接,該參數(shù)不支持在內(nèi)存中運(yùn)行模式
    5.TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:輸出跟蹤日志到控制臺(tái)或文件, 取值0為OFF,1為ERROR(默認(rèn)值),2為INFO,3為DEBUG
    6.SET TRACE_MAX_FILE_SIZE mb:設(shè)置跟蹤日志文件的大小,默認(rèn)為16M

  • 五、啟動(dòng)服務(wù)模式,打開H2 Console web頁(yè)面
    啟動(dòng)服務(wù),在命令行中執(zhí)行
    java -cp h2*.jar org.h2.tools.Server
    執(zhí)行如下命令,獲取選項(xiàng)列表及默認(rèn)值
    java -cp h2*.jar org.h2.tools.Server -?
    常見的選項(xiàng)如下:
    -web:啟動(dòng)支持H2 Console的服務(wù)
    -webPort :服務(wù)啟動(dòng)端口,默認(rèn)為8082
    -browser:啟動(dòng)H2 Console web管理頁(yè)面
    -tcp:使用TCP server模式啟動(dòng)
    -pg:使用PG server模式啟動(dòng)

Activiti里的測(cè)試用例與h2數(shù)據(jù)庫(kù)

Activiti里的測(cè)試用例創(chuàng)建的h2數(shù)據(jù)庫(kù)看不到

JPAVariableTest
JPAEnhancedVariableTest

Activiti里的測(cè)試用例創(chuàng)建的h2數(shù)據(jù)庫(kù)看不到,不知為何?
打了斷點(diǎn),到創(chuàng)建表的代碼,確定連接都一致。就是看不到創(chuàng)建的表出來(lái)。


原因跟H2的運(yùn)行方式有關(guān)。

將幾個(gè)數(shù)據(jù)源連接配置修改一下:

再跑下JPAVariableTest,就可以看到數(shù)據(jù)庫(kù)表了。


可是又有新問題:activiti-jpa數(shù)據(jù)庫(kù)可以看到,但是activiti和JpaVariableTest數(shù)據(jù)庫(kù)怎么都看不到表。好奇怪??

改成服務(wù)器連接模式也不行:

//D:\git\Activiti\activiti-core\activiti-engine\src\test\resources\activiti.cfg.xml <property name="jdbcUrl" value="jdbc:h2:tcp://localhost/~/.h2/db/activiti;AUTO_SERVER=TRUE" />//D:\git\Activiti\activiti-core\activiti-engine\src\test\resources\org\activiti\standalone\jpa\activiti.cfg.xml<property name="jdbcUrl" value="jdbc:h2:tcp://localhost/~/.h2/db/JpaVariableTest;AUTO_SERVER=TRUE" />//D:\git\Activiti\activiti-core\activiti-engine\src\test\resources\META-INF\persistence.xml<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/.h2/db/activiti-jpa;AUTO_SERVER=TRUE" />

直接JPAVariableTest跑不過(guò),而且只有activiti-jpa能創(chuàng)建成功,其它兩個(gè)都創(chuàng)建不成功。

08:15:03 [main] ERROR org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Exception while initializing Database connection org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200]at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)at org.h2.engine.SessionRemote.done(SessionRemote.java:611)at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:147)at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435)at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:321)at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173)at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)at org.h2.Driver.connect(Driver.java:69)at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:190)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:201)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:196)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:93)at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:403)at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.initDatabaseType(ProcessEngineConfigurationImpl.java:1128)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.initDataSource(ProcessEngineConfigurationImpl.java:1078)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.init(ProcessEngineConfigurationImpl.java:865)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:848)at org.activiti.standalone.jpa.JPAVariableTest.initializeProcessEngine(JPAVariableTest.java:76)at org.activiti.engine.impl.test.AbstractActivitiTestCase.runBare(AbstractActivitiTestCase.java:89)at junit.framework.TestResult$1.protect(TestResult.java:122)at junit.framework.TestResult.runProtected(TestResult.java:142)at junit.framework.TestResult.run(TestResult.java:125)at junit.framework.TestCase.run(TestCase.java:129)at junit.framework.TestSuite.runTest(TestSuite.java:252)at junit.framework.TestSuite.run(TestSuite.java:247)at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)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)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:568)at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131) 08:15:04 [main] INFO org.hibernate.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [name: activiti-jpa-pu...] 08:15:04 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {5.3.15.Final}Hibernate: create table SHORT_ID_ENTITY (ID_ smallint not null, primary key (ID_)) Hibernate: create table SQLDATE_ID_ENTITY (ID_ date not null, primary key (ID_)) Hibernate: create table STRING_ID_ENTITY (ID_ varchar(255) not null, primary key (ID_)) 08:15:05 [main] INFO org.hibernate.tool.schema.internal.SchemaCreatorImpl - HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@240f350a' 08:15:05 [main] INFO bitronix.tm.BitronixTransactionManager - Bitronix Transaction Manager version 2.1.4 08:15:05 [main] INFO bitronix.tm.Configuration - JVM unique ID: <activiti-spring-btm> 08:15:05 [main] INFO bitronix.tm.recovery.Recoverer - recovery committed 0 dangling transaction(s) and rolled back 0 aborted transaction(s) on 0 resource(s) [] (restricted to serverId 'activiti-spring-btm') 08:15:05 [main] ERROR org.activiti.engine.impl.interceptor.CommandContext - Error while closing command context org.activiti.engine.ActivitiException: couldn't check if tables are already present using metadata: ### Error getting a new connection. Cause: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-204]at org.h2.message.DbException.getJdbcSQLException(DbException.java:697)at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)at org.h2.message.DbException.get(DbException.java:227)at org.h2.message.DbException.get(DbException.java:203)at org.h2.engine.Engine.throwNotFound(Engine.java:189)at org.h2.engine.Engine.openSession(Engine.java:72)at org.h2.engine.Engine.openSession(Engine.java:222)at org.h2.engine.Engine.createSession(Engine.java:201)at org.h2.server.TcpServerThread.run(TcpServerThread.java:175)at java.lang.Thread.run(Unknown Source)### Cause: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-204]at org.h2.message.DbException.getJdbcSQLException(DbException.java:697)at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)at org.h2.message.DbException.get(DbException.java:227)at org.h2.message.DbException.get(DbException.java:203)at org.h2.engine.Engine.throwNotFound(Engine.java:189)at org.h2.engine.Engine.openSession(Engine.java:72)at org.h2.engine.Engine.openSession(Engine.java:222)at org.h2.engine.Engine.createSession(Engine.java:201)at org.h2.server.TcpServerThread.run(TcpServerThread.java:175)at java.lang.Thread.run(Unknown Source)at org.activiti.engine.impl.db.DbSqlSession.isTablePresent(DbSqlSession.java:1183)at org.activiti.engine.impl.db.DbSqlSession.isEngineTablePresent(DbSqlSession.java:1124)at org.activiti.engine.impl.db.DbSqlSession.dbSchemaUpdate(DbSqlSession.java:1046)at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1454)at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:28)at org.activiti.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:36)at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:77)at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:56)at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:41)at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48)at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:59)at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29)at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44)at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:68)at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:849)at org.activiti.standalone.jpa.JPAVariableTest.initializeProcessEngine(JPAVariableTest.java:76)at org.activiti.engine.impl.test.AbstractActivitiTestCase.runBare(AbstractActivitiTestCase.java:89)at junit.framework.TestResult$1.protect(TestResult.java:122)at junit.framework.TestResult.runProtected(TestResult.java:142)at junit.framework.TestResult.run(TestResult.java:125)at junit.framework.TestCase.run(TestCase.java:129)at junit.framework.TestSuite.runTest(TestSuite.java:252)at junit.framework.TestSuite.run(TestSuite.java:247)at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)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)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:568)at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131) Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error getting a new connection. Cause: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-204]at org.h2.message.DbException.getJdbcSQLException(DbException.java:697)at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)at org.h2.message.DbException.get(DbException.java:227)at org.h2.message.DbException.get(DbException.java:203)at org.h2.engine.Engine.throwNotFound(Engine.java:189)at org.h2.engine.Engine.openSession(Engine.java:72)at org.h2.engine.Engine.openSession(Engine.java:222)at org.h2.engine.Engine.createSession(Engine.java:201)at org.h2.server.TcpServerThread.run(TcpServerThread.java:175)at java.lang.Thread.run(Unknown Source)### Cause: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-204]at org.h2.message.DbException.getJdbcSQLException(DbException.java:697)at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)at org.h2.message.DbException.get(DbException.java:227)at org.h2.message.DbException.get(DbException.java:203)at org.h2.engine.Engine.throwNotFound(Engine.java:189)at org.h2.engine.Engine.openSession(Engine.java:72)at org.h2.engine.Engine.openSession(Engine.java:222)at org.h2.engine.Engine.createSession(Engine.java:201)at org.h2.server.TcpServerThread.run(TcpServerThread.java:175)at java.lang.Thread.run(Unknown Source)at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)at org.apache.ibatis.session.defaults.DefaultSqlSession.getConnection(DefaultSqlSession.java:300)at org.activiti.engine.impl.db.DbSqlSession.isTablePresent(DbSqlSession.java:1140)... 33 common frames omitted Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/YY/.h2/db/JpaVariableTest" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200]at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)at org.h2.engine.SessionRemote.done(SessionRemote.java:611)at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:147)at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435)at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:321)at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173)at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)at org.h2.Driver.connect(Driver.java:69)at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:190)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:201)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:196)at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:93)at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:403)at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89)at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:138)at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:60)at org.apache.ibatis.session.defaults.DefaultSqlSession.getConnection(DefaultSqlSession.java:298)... 34 common frames omitted

報(bào)錯(cuò)原因:

以上圖其實(shí)也不是原因。
分析下報(bào)錯(cuò)堆棧,你是另外兩個(gè)數(shù)據(jù)庫(kù)沒辦法自動(dòng)創(chuàng)建。我于是想給它手動(dòng)創(chuàng)建創(chuàng)建。
h2手動(dòng)創(chuàng)建好很坑,用jdbc:h2:tcp:的方式登錄不上,只能用jdbc:h2:file:的方式可以自動(dòng)創(chuàng)建 :


生成文件 后再用jdbc:h2:tcp:方式登錄就可以進(jìn)去了。而且JPAVariableTest也成功跑通。idea 也能成功邊上各個(gè)數(shù)據(jù)庫(kù)了。

總結(jié)

以上是生活随笔為你收集整理的Activiti之H2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。