2015-11-28 6 views
0

У меня есть файл базы данных H2, который мне нужно реплицировать, используя SymmetricDS.Подключить SymmetricDS к существующему файлу данных H2

я могу получить доступ к базе данных из веб-консоли в интегрированном режиме, используя этот адрес:

jdbc:h2:file:E:/Folder/database;AUTO_SERVER=TRUE;IFEXISTS=TRUE; 

Но используя тот же адрес в свойствах узла файла symmtericds бросками следующие ошибки:

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. 

Хотя если следующий url используется в файле свойств узлов симметричных символов, все работает отлично, но база данных создается в каталоге symmet-server-3.7.26/tmp/h2.

jdbc:h2:file:database;AUTO_SERVER=TRUE; 

Мне не посчастливилось решить эту проблему за последние пару дней.

Любая помощь будет принята с благодарностью.

Выполнение документации по H2 Я выяснил, что это поведение обусловлено опцией -baseDir: http://www.h2database.com/html/advanced.html#remote_access.

Но как этот параметр устанавливается автоматически и как его отключить ..?

Делая некоторые обширные исследования по этому вопросу, основная причина оказывается статический блок AbstractCommandLauncher класса SymmetricDS:

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(); 
} 

И, как выясняется, исходный код SymmetricDS должен быть для его устранения.

+0

Возможный дубликат [SymmetricDS не подключается к базе данных H2] (http://stackoverflow.com/questions/33967836/symmetricds-not-connecting-to-h2-database) –

+0

Не только «возможно» если быть точным, это тот самый вопрос, заданный вчера тем же пользователем. –

+0

Но мне посоветовали переместить вопрос на новый вопрос! –

ответ

0

Это поведение невозможно отключить вообще, но переопределить его можно, установив -Dh2.baseDir во время работы SymmetricDS. Оригинальный ответ here