Java 将SymmetricDS连接到现有H2数据库文件

Java 将SymmetricDS连接到现有H2数据库文件,java,database,h2,symmetricds,Java,Database,H2,Symmetricds,我有一个H2数据库文件,需要使用它进行复制 我可以使用以下url在嵌入式模式下从web控制台访问数据库: jdbc:h2:file:E:/Folder/database;AUTO_SERVER=TRUE;IFEXISTS=TRUE; 但在symmtericds的节点属性文件中使用相同的url会引发以下错误: ERROR [server-000] [AbstractSymmetricEngine] [symmetric-engine-startup-0] Could not get a conn

我有一个H2数据库文件,需要使用它进行复制

我可以使用以下url在嵌入式模式下从web控制台访问数据库:

jdbc:h2:file:E:/Folder/database;AUTO_SERVER=TRUE;IFEXISTS=TRUE;
但在symmtericds的节点属性文件中使用相同的url会引发以下错误:

ERROR [server-000] [AbstractSymmetricEngine] [symmetric-engine-startup-0] Could not get a connection to the database: Cannot create PoolableConnectionFactory (IO Exception: "E:/Folder/database outside D:/symmetric-server-3.7.26/tmp/h2" [90028-182]).  Waiting for 10 seconds before trying to connect to the database again.
虽然如果在symmetricds的节点属性文件中使用以下url,则一切正常,但数据库是在symmetricd-server-3.7.26/tmp/h2目录中创建的

jdbc:h2:file:database;AUTO_SERVER=TRUE;
在过去的几天里,我没能幸运地解决这个问题

任何形式的帮助都将不胜感激

通过查看H2文档,我发现这种行为是由于-baseDir选项引起的

但是如何自动设置此选项以及如何禁用它

对这个问题进行了广泛的研究,根本原因是AbstractCommandLauncher类的静态块:


事实证明,必须修改的源代码才能解决此问题。

此行为不能完全禁用,但可以通过在运行SymmetricDS时设置-Dh2.baseDir来覆盖它。最初的答案是

可能重复的不仅仅是“可能”,这是同一个用户昨天提出的同一个问题。但有人建议我将问题转移到一个新问题!我没有ide是谁建议你做什么的,但重新提出同样的问题肯定是错误的。这只是在浪费人们的时间,试图询问并找出你可能已经在原始评论下面讨论过的细节。既然你删除了另一个问题,情况就更糟了。我只是想寻求一些帮助。如果你读过对上一个问题的评论,你肯定知道为什么会提出这个问题。
static {
    String symHome = System.getenv("SYM_HOME");
    if (symHome == null) {
        symHome = ".";
    }
    System.setProperty("log4j.sym.home", symHome);
    if (isBlank(System.getProperty("h2.baseDir"))) {
       System.setProperty("h2.baseDir", symHome + "/tmp/h2");
    }
    DEFAULT_SERVER_PROPERTIES = System.getProperty(SystemConstants.SYSPROP_SERVER_PROPERTIES_PATH, symHome + "/conf/symmetric-server.properties");
    log = LoggerFactory.getLogger(AbstractCommandLauncher.class);
    initFromServerProperties();
}